2020蓝桥杯省赛---java---B---8(数字三角形)
生活随笔
收集整理的這篇文章主要介紹了
2020蓝桥杯省赛---java---B---8(数字三角形)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
時間限制: 1.0s 內(nèi)存限制: 512.0MB 本題總分:20 分【問題描述】上圖給出了一個數(shù)字三角形。從三角形的頂部到底部有很多條不同的路徑。 對于每條路徑,把路徑上面的數(shù)加起來可以得到一個和,你的任務(wù)就是找到最 大的和。路徑上的每一步只能從一個數(shù)走到下一層和它最近的左邊的那個數(shù)或者右 邊的那個數(shù)。此外,向左下走的次數(shù)與向右下走的次數(shù)相差不能超過 1?!据斎敫袷健?輸入的第一行包含一個整數(shù) N (1 < N ≤ 100),表示三角形的行數(shù)。下面的 N 行給出數(shù)字三角形。數(shù)字三角形上的數(shù)都是 0 至 100 之間的整數(shù)?!据敵龈袷健?輸出一個整數(shù),表示答案?!緲永斎搿?5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5【樣例輸出】 27思路分析
動態(tài)規(guī)劃+貪心
代碼實現(xiàn)
package TEST;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[][] r = new int[n+1][n+1];for(int i=1; i<=n; ++i) {for (int j = 1; j <= i; ++j) {r[i][j] = sc.nextInt();r[i][j] += Math.max(r[i - 1][j - 1], r[i - 1][j]);}}System.out.println(n%2==1?r[n][n/2+1]:Math.max(r[n][n/2], r[n][n/2+1])); //分奇數(shù)和偶數(shù)}}總結(jié)
以上是生活随笔為你收集整理的2020蓝桥杯省赛---java---B---8(数字三角形)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cloudways vs InMotio
- 下一篇: 2020蓝桥杯省赛---java---B