import java.lang.Math;
class Solution {
/*
dp[i][j]表示grid[0][0]到grid[i][j]的最小和。
动态转移方程:dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
*/
public int minPathSum(int[][] grid) {
int n=grid.length;
int m=grid[0].length;
int [][]dp=new int[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(i==0&&j==0){
dp[i][j]=grid[i][j];//我又按以往的习惯赋值为1了,应该是grid[0][0]
}else if(i==0){
dp[i][j]=dp[i][j-1]+grid[i][j];
}else if(j==0){
dp[i][j]=dp[i-1][j]+grid[i][j];
}else {
dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];
}
}
}
return dp[n-1][m-1];
}
}
动态规划中等 leetcode64. 最小路径和
最新推荐文章于 2024-11-09 05:20:46 发布