public class MinimumPath {
public static void main(String[] args) {
int[][] map = {{1,2,3},{1,1,1},{1,1,1}};
System.out.println(getMin(map,3,3));
}
public static int getMin(int[][] map, int n, int m) {
//特殊输入
if(map==null||n<=0||m<=0) return 0;
//①创建动态规划结果矩阵dp[][]
int[][] dp=new int[n][m];
//②求解第1行第1列的结果值
dp[0][0]=map[0][0];
for(int i=1;i<m;i++){
dp[0][i]=dp[0][i-1]+map[0][i];
}
//求第1列的结果值
for(int i=1;i<n;i++){
dp[i][0]=dp[i-1][0]+map[i][0];
}
//③从上到下,从左到右求任意dp[i][j]
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
dp[i][j]=map[i][j]+Math.min(dp[i-1][j],dp[i][j-1]);
}
}
//④返回右下角的结果值
return dp[n-1][m-1];
}
}
求出二位矩阵左上角到右下角的最小矩阵和
最新推荐文章于 2022-12-17 00:48:43 发布