AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

矩阵最长递增路径

作者: 作者的头像   Dessa ,  2024-11-02 13:49:05 ,  所有人可见 ,  阅读 8


0


https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/submissions/577581299/

记忆化的数组存的是:dp[i][j],在i,j这个点出发能得到的最长递增路径

const int N=210;
int dp[N][N];
int a[N][N];
int n,m;
int dfs(int x,int y)
{
    if(dp[x][y]!=0) return dp[x][y];
    int ans=0;
    if(x-1>=0&&a[x-1][y]>a[x][y]) ans=max(ans,dfs(x-1,y));
    if(x+1<n&&a[x+1][y]>a[x][y]) ans=max(ans,dfs(x+1,y));
    if(y-1>=0&&a[x][y-1]>a[x][y]) ans=max(ans,dfs(x,y-1));
    if(y+1<m&&a[x][y+1]>a[x][y]) ans=max(ans,dfs(x,y+1));
    dp[x][y]=ans+1;
    return dp[x][y];
}
class Solution {
public:
    int longestIncreasingPath(vector<vector<int>>& matrix) {
        n=matrix.size();
        m=matrix[0].size();

        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                dp[i][j]=0,a[i][j]=matrix[i][j];
        int res=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                res=max(res,dfs(i,j));
            }
        }
        return res;
    }
};

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息