栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

力扣-329题 矩阵中的最长递增路径(C++)- 困难、dp记忆化搜索

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣-329题 矩阵中的最长递增路径(C++)- 困难、dp记忆化搜索

题目链接:https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/
题目如下:

class Solution {
public:
    int longestIncreasingPath(vector>& matrix) {
        //dp记忆化搜索
        if(matrix.size()==0||matrix[0].size()==0) return 0;
        w=matrix;
        m=matrix.size();n=matrix[0].size();
        f=vector>(m,vector(n,-1));//f中存放当前位置的最大递增路径长度

        //找到最大的并输出
        int res=0;
        for(int i=0;i
            for(int j=0;j
                res=max(res,dp(i,j));
            }
        }

        return res;
    }

    int dp(int x,int y){
        auto& v=f[x][y];

        if(v!=-1) return v;//-1表示之前已经走过这个节点
        v=1;

        int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
        for(int i=0;i<4;i++){
            int a=x+dx[i],b=y+dy[i];
            if(a>=0&&a=0&&b
                v=max(v,dp(a,b)+1);
            }
        }

        return v;
    }
private:
    int m,n;
    vector> f,w;
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1004705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号