wangjiajian • 2年前
#include <stdio.h>
int r, c, a[101][101], visited[101][101], p[4]= {-1,1,0,0}, q[4]= {0,0,-1,1};
inline int mx(int x, int y) {
if(x > y)
return x;
return y;
}
int dfs(int x,int y) {
if(!visited[x][y]) {
int xx, yy;
for(int i=1; i<=4; i++) {
xx = x+p[i-1], yy = y+q[i-1];
if(xx<=r && xx>=1 && yy<=c && yy>=1 && a[x][y]>a[xx][yy])
visited[x][y] = mx(visited[x][y], dfs(xx,yy));
}
visited[x][y]++;
}
return visited[x][y];
}
int main() {
int t, ans;
scanf("%d%d", &r, &c);
for(int i=1; i<=r; i++) {
for(int j=1; j<=c; j++)
scanf("%d",&a[i][j]);
}
for(int i=1; i<=r; i++) {
for(int j=1; j<=c; j++) {
if(i==1 && j==1)
ans = dfs(1, 1);
else
ans = mx(dfs(i,j), ans);
}
}
printf("%d", ans);
return 0;
}
评论: