题目链接: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;
};



