Wikioi

作者: 有奶喝先森 | 来源:发表于2017-02-17 17:22 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Wikioi

          本文链接:https://www.haomeiwen.com/subject/nsslwttx.html