#include <stdio.h> #include <string.h> int n,m; int map[100][100]; int maxcnt=0; int climb(int a,int b,int cnt) { if(map[a][b]>=map[a-1][b]&&map[a][b]>=map[a+1][b]&&map[a][b]>=map[a][b-1]&&map[a][b]>=map[a][b+1]) { if(cnt>maxcnt) { maxcnt=cnt; } return 1; } else { if(a+1<=n&&map[a+1][b]>map[a][b]) { climb(a+1,b,cnt+1); } if(a-1>=1&&map[a-1][b]>map[a][b]) { climb(a-1,b,cnt+1); } if(b+1<=m&&map[a][b+1]>map[a][b]) { climb(a,b+1,cnt+1); } if(b-1>=1&&map[a][b-1]>map[a][b]) { climb(a,b-1,cnt+1); } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { maxcnt=0; memset(map,0,sizeof(map)); int mini,minj,min=9999; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { scanf("%d",&map[i][j]); } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { climb(i,j,0); } } printf("%d\n",maxcnt); } } |
Double click to view unformatted code.