public class Solution {
public int min(int a,int
b){ return ((a)<(b)?(a):(b)); }
public int
minPathSum(int[][] grid) {
int i,j,m,n;
int [][] dp = new
int[100][100];
n = grid.length;
m = grid[0].length;
dp[0][0]=grid[0][0];
for(i = 1;i<m;i++){
dp[0][i] =
dp[0][i-1]+grid[0][i];//横
}
for(j = 1;j<n;j++){
dp[j][0] =
dp[j-1][0]+grid[j][0];//纵
}
for(i=1;i<n;i++)
for(j=1;j<m;j++){
//中间部分的计算
dp[i][j] =
min(dp[i-1][j]+grid[i][j],dp[i][j-1]+grid[i][j]);
}
return dp[n-1][m-1];
}
}