2023-07-13力扣每日一题

链接:

931. 下降路径最小和

题意:

一个方形整数数组(下称数组),求数组的下降路径最小和

下降路径就是每行选一个数,且和上一个选择的数字列偏差小于等于1(要么选正下,要么左下,要么右下)

解:

思维,逆推可发现,到达这个格子的下降路径最小值只和上一行的三个格子有关,假如(1,1)最小值就是(0,0),(0,1),(0,2)中的最小值加上(1,1)的值

数组大小100*100,每个格子比较三个数,就是3E4

实际代码:

#include
using namespace std;
constexpr int Nmax=1E2+7;
int minFallingPathSum(vector>& matrix)
{
    int n=matrix.size(),m=matrix[0].size();
    //cout<>water;
    for(int i=0;itemp;temp.clear();
        for(int j=0;j0) t=min(matrix[i][j]+water[i-1][j-1],t);
                if(j+1> matrix;
    int n,m;cin>>n>>m;
    
    for(int i=1;i<=n;i++)
    {
        vectortemp;temp.clear();
        for(int j=1;j<=m;j++)
        {
            int t;cin>>t;
            temp.push_back(t);
        }
        matrix.push_back(temp);
    }
    
    int ans=minFallingPathSum(matrix);
    cout<

限制:

  • n == matrix.length == matrix[i].length

  • 1 <= n <= 100

  • -100 <= matrix[i][j] <= 100

你可能感兴趣的:(leetcode,算法)