【动态规划】【爬楼梯问题】931. 下降路径最小和

爬台阶题型汇总

  • 【70. 爬楼梯】
  • 【62. 不同路径】
  • 【63. 不同路径II】
  • 【91. 解码问题】

image

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

posted @ 2022-04-25 18:19  取我方天画戟来  阅读(32)  评论(0)    收藏  举报