package leetcode;
public class demo_64 {
public int minPathSum(int[][] grid) {
int dp[][]=new int[grid.length][grid[0].length];
dp[0][0]=grid[0][0];
for(int i=0;i<grid.length;i++) {
for(int j=0;j<grid[0].length;j++) {
//到达最上边和最左边的点最小值都是自身与前一个的和
if(i==0&&j>0) {
dp[i][j]=dp[i][j-1]+grid[i][j];
}
if(j==0&&i>0) {
dp[i][j]=dp[i-1][j]+grid[i][j];
}
//到达指定位置的点的最小值为到达上边或左边的点的最小值与自身的和
if(i>0&&j>0) {
dp[i][j]=Math.min(dp[i-1][j], dp[i][j-1])+grid[i][j];
}
}
}
System.out.println(dp[grid.length-1][grid[0].length-1]);
return dp[grid.length-1][grid[0].length-1];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_64 d64=new demo_64();
int[][] grid= {{1,2,3},{4,5,6}};
d64.minPathSum(grid);
}
}