给你一个 n *m 的矩阵,求这个矩阵内部的最长上升子序列
记忆化去dp即可
在深搜的过程中去记忆化dp
int dp[2005][2005];
int dfs(int x, int y){
if (dp[x][y]) return dp[x][y];
int maxth = 1;
for(int i = 0; i < 4; i++){
int fx = x+dir[i][0];
int fy = y+dir[i][1];
if (fx < 1 || fx > n || fy < 1 || fy > m || mp[fx][fy] <= mp[x][y]) continue;
int len = dfs(fx, fy)+1;
if (maxth < len) maxth = len;
}
dp[x][y] = maxth;
return maxth;
}
void solve() {
int ans = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
int lenth = dfs(i , j);
ans = max(ans, lenth);
}
}
printf("%d\n", ans);
}