【动态规划】【爬楼梯问题】931. 下降路径最小和
爬台阶题型汇总
- 【70. 爬楼梯】
- 【62. 不同路径】
- 【63. 不同路径II】
- 【91. 解码问题】

class Solution
{
    public int minFallingPathSum( int[][] matrix )
    {
        int n = matrix.length;
        int[][] dp = new int[n][n];
        //对于第一行来说,每个坐标的值就是他的最小值
        for(int i =0; i<n;i++)
        {
            dp[0][i] = matrix[0][i];
        }
        for(int i =1;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                int val = matrix[i][j];
                dp[i][j] = dp[i-1][j]+val;
                if(j-1>=0)
                {
                    dp[i][j]=Math.min(dp[i][j],dp[i-1][j-1]+val);
                }
                if(j+1<n)
                {
                    dp[i][j]=Math.min(dp[i][j],dp[i-1][j+1]+val);
                }
            }
        }
        int ans =Integer.MAX_VALUE;
        // 遍历最后一行,找到最小的
        for(int i =0 ;i<n;i++)
        {
            ans = Math.min(ans,dp[n-1][i]);
        }
        return ans;
    }
}
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号