文章
34
粉丝
89
获赞
172
访问
44.3k
#include<bits/stdc++.h>
using namespace std;
int dp[105][105];
int a[105][105];
bool isVisit[105][105];
int dir[4][2] = {0,1,1,0,0,-1,-1,0};
int n,m;
int dfs(int x,int y){
if(dp[x][y]) return dp[x][y];
int maxx = 1;
for(int i = 0;i < 4;i++){
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if(nx >= 0 && nx < n && ny >= 0 && ny < m && a[nx][ny] < a[x][y]){
maxx = max(maxx,dfs(nx,ny)+1);
}
}
dp[x][y] = maxx;
return maxx;
}
int main(){
while(cin >> n >> m){
memset(isVisit,0,sizeof(isVisit));
memset(dp,0,sizeof(dp));
int maxx = 0;
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j ++){
cin >> a[i][j];
}
}
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j ++){
dp[i][j] = dfs(i,j);
...
登录后发布评论
暂无评论,来抢沙发