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];
   
    }
}