Wikioi

package new2017;

import java.util.Scanner;

public class Wikioi {

public static void main(String[] args) {

// 数组构建

Scanner scan = new Scanner(System.in);

System.out.println("please input the height:");

int n = scan.nextInt();

int[][] a = new int[n][];

for (int i = 0; i < n; i++) {

a[i] = new int[i + 1];

}

System.out.println("please input datas:");

for (int i = 0; i < n; i++) {

for (int j = 0; j <= i; j++) {

a[i][j] = scan.nextInt();

}

}

// int[][] a = { { 7 }, { 3, 8 }, { 8, 1, 0 }, { 2, 7, 4, 4 }, { 4, 5, 2, 6, 5 } };

// int n = a.length;

int[][] dp = new int[n][n];

int ans = 0x80000000;// -2147483648

for (int i = 0; i < n; i++) {

for (int j = 0; j <= i; j++) {

if (i == 0) {// 第一层

dp[0][0] = a[0][0];

} else {

if (j == 0) {// 每一层的最左边单独处理

dp[i][j] = dp[i - 1][0] + a[i][j];

} else if (j == i) {// 每一层的最右边单独处理

dp[i][j] = dp[i - 1][i - 1] + a[i][j];

} else {// 中间的比较对应的上面两个哪个大

dp[i][j] = dp[i - 1][j - 1] > dp[i - 1][j] ? dp[i - 1][j - 1] : dp[i - 1][j] + a[i][j];

}

}

}

}

for (int j = 0; j < n; j++) {// 遍历最后一层

if (dp[n - 1][j] > ans) {

ans = dp[n - 1][j];

}

}

System.out.println(ans);

}

}

运行结果为:

please input the height:
5
please input datas:

7
3
8
8
1
0
2
7
4
4
4
5
2
6
5
25

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 11,651评论 0 33
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 4,404评论 0 40
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    江湖宇阅读 1,284评论 0 2
  • 《秘密》在大陆已经出版十周年了,很庆幸自己在十年前就看到了这本书。 现在还记得刚看到这本书时心中的感动、震撼和惊喜...
    Emma英落777阅读 169评论 0 1
  • 第一次接触校园读物是孙睿的《草样年华》,这本书就像精神鸦片一样吸引着我读了一本又一本。小学的我眼中的大学生活应该是...
    袁戎阅读 9,613评论 26 32