美文网首页
三角形最大路径

三角形最大路径

作者: 牛亦非 | 来源:发表于2017-12-01 11:28 被阅读0次

看到公司一个前端面试题,题目如下:
一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。
每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。
5
8 4
3 6 9
7 2 9 5
例子中的最优方案是:5 + 8 + 6 + 9 = 28
这是一道很典型的DFS+动态规划的问题,所以用数组构造这个三角形无疑是最直接的方式。
代码如下:

public class LongestPathInTriangle {

    private int height;
    private int[][] triangle;
    private int[][] path;
    public int maxRoute = 0;

    public LongestPathInTriangle(int[][] triangle) {
        this.triangle = triangle;
        this.height = triangle.length;
        this.path = new int[height][height];
        path[0][0] = triangle[0][0];
    }

    public void dfs(int x, int y) {
        if (x == height - 1) {
            return;
        }
        int root = path[x][y];
        int left = triangle[x + 1][y];
        int right = triangle[x + 1][y + 1];
        path[x + 1][y] = Math.max(path[x + 1][y], root + left);
        path[x + 1][y + 1] = Math.max(path[x + 1][y + 1], root + right);
        maxRoute = Math.max(path[x + 1][y], path[x + 1][y + 1]);
        for (int i = 0; i <= y + 1; i++) {
            dfs(x + 1, i);
        }
    }

    public static void main(String[] args) {
        int[][] triangle = {
                {5, 0, 0, 0},
                {8, 4, 0, 0},
                {4, 2, 1, 0},
                {7, 2, 9, 50}
        };        
        LongestPathInTriangle test = new LongestPathInTriangle(triangle);
        test.dfs(0, 0);
        System.out.println(test.maxRoute);
    }

相关文章

  • DP(dynamic programming)

    以数字三角形为例:给出一个数字三角形,从顶部到底部有很多路径,求路径最大和。如: 73 88 1 02...

  • 动态规划-数字三角形1

    题目要求 在上面的数字三角形中寻找一条从顶部到底边的路径(注意是底边),使得路径上经过的数字之和最大.路径上的每一...

  • 动态规划 数字三角形

    问题描述 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左...

  • 动态规划数字三角形

    给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。输...

  • 三角形最大路径

    看到公司一个前端面试题,题目如下:一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。每次只能...

  • LeetCode 120. 三角形最小路径和(Triangle)

    120. 三角形最小路径和 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻...

  • 0039-数字三角形

    问题描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以...

  • 动态规划 002 - 数字三角形问题

    问题描述 下图给出了一个数字三角形,请编写一个程序,计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。...

  • LeetCode-120-三角形的最小路径和

    LeetCode-120-三角形的最小路径和 动态规划介绍 题目 给定一个三角形,找出自顶向下的最小路径和。每一步...

  • 100天代码挑战:DAY11

    LeetCode 120. 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相...

网友评论

      本文标题:三角形最大路径

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