首页 > 其他分享 >9.三角形最佳路径

9.三角形最佳路径

时间:2023-08-04 16:56:52浏览次数:40  
标签:02 int 44 路径 最佳 88 第二行 三角形

【题目】
如下所示的由正整数数字构成的三角形:

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

【输入】
第一行为三角形高度100≥h≥1,同时也是最底层边的数字的数目。

从第二行开始,每行为三角形相应行的数字,中间用空格分隔。

【输出】
最佳路径的长度数值。

【输入样例】
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
【输出样例】
30

 

【思想】

dp,从第二行第一个开始更新当前三角形,每个数保存到达数最大的累加和,最后从最后一行找最大的即可。

 

【代码】

 public static int coupons(int[][] value) {
        //从第二行第一个开始更新三角形
        for (int i = 1; i < value.length; i++) {
            for (int j = 0; j <= i; j++) {
                //最左边的不能累加左上的,只能累加上方的
                if (j == 0) {
                    value[i][j] += value[i - 1][j];
                    //最右边的上面没有数,只能累加左上的
                } else if (j == i) {
                    value[i][j] += value[i - 1][j - 1];
                } else {
                    //判断上方和左上那个大,累加到当前位
                    value[i][j] = Math.max(value[i][j] + value[i - 1][j - 1], value[i][j] + value[i - 1][j]);
                }
            }
        }
        int res = 0;
        //从最后一行找最大的数返回即可
        for (int i = 0; i < value.length - 1; i++) {
            res = Math.max(res, value[value.length - 1][i]);
        }
        return res;
    }

 

标签:02,int,44,路径,最佳,88,第二行,三角形
From: https://www.cnblogs.com/End1ess/p/17606417.html

相关文章