1.题目
算法分析与设计作业——
2.思路
转移方程:dp[i][j]+=max(dp[i-1][j-1],dp[i-1][j])
在三角形中,每个位置的最大路径和为 当前位置值+max(左上最大和,右上最大和)。具体在数组中,是上面的和左上的位置的最大和。遍历数组,获得每个位置的最大和,并且同时更新变量max,返回max。
3.代码
public class Solution2 {
public static void main(String[] args) {
int k=5;
int[][] map=new int[][]{
{7},{3,8},{8,1,0},
{2,7,4,4},{4,5,2,6,5}
};
int res=count(map,k);
System.out.println(res);
}
public static int count(int[][] dp,int k) {
int max=0;
for(int i=1;i<k;i++){
for(int j=0;j<=i;j++){
int a=0;
int b=0;
//左上有值
if(j-1>=0)
a=dp[i-1][j-1];
//上有值
if(j<i)
b=dp[i-1][j];
dp[i][j]+=Math.max(a,b);
max=Math.max(max,dp[i][j]);
}
}
return max;
}
}