/** * 三角形的最小路径和 * 2 * 3 4 * 6 5 7 * 4 1 8 3 * 以上三角形由一连串的数字构成,要求从顶点 2 开始走到最底下边的最短路径,每次只能向当前节点下面的两个节点走,如 3 可以向 6 或 5 走,不能直接走到 7。 * */ public class DP1 { private static int[][] triangle = { {2,0,0,0}, {3,4,0,0}, {6,5,7,0}, {4,1,8,3} }; public static int traverse() { int totalRow = triangle.length; int[] mini = triangle[totalRow - 1]; for(int i = totalRow - 2; i>=0; i--) { for(int j=0; j < totalRow; j ++) { if(triangle[i][j] == 0) { continue; } mini[j] = triangle[i][j] + Math.min(mini[j], mini[j+1]); } } return mini[0]; } public static void main(String[] args) { int minPathSum = traverse(); System.out.println("sum = " + minPathSum); } }
三角形的最小路径和
最新推荐文章于 2021-11-16 11:17:03 发布