不知道过了多少天了,才做了一题,还是抄的,感觉我好失败啊!苦逼的菜鸟,还有很长的路要走……
不过我要严肃声明,凡是我贴出来的代码,都是我完全理解、能够自己独立敲出来的,并不是为了应付。
1 #include<stdio.h> 2 #include<string.h> 3 int r,c,f[105][105],a[105][105]; 4 int dx[] = {0,0,1,-1},dy[] = {1,-1,0,0}; 5 int dfs(int x,int y) 6 { 7 int nx,ny,t,&ans = f[x][y]; 8 if(f[x][y] != 0) return f[x][y]; 9 ans = 1; 10 for(int i = 0; i < 4; i++) 11 { 12 nx = x + dx[i]; 13 ny = y + dy[i]; 14 if(nx > 0 && ny > 0 && nx <= r && ny <= c 15 && a[nx][ny] > a[x][y]) 16 { 17 t = dfs(nx,ny); 18 if(t + 1 > ans) 19 ans = t+1; 20 } 21 } 22 return ans; 23 } 24 int main() 25 { 26 int n,i,j,l,t,max; 27 char s[50]; 28 scanf("%d",&n); 29 while(n--) 30 { 31 scanf("%s%d%d",&s,&r,&c); 32 l = strlen(s); 33 s[l] = max = 0; 34 memset(f,0,sizeof(f)); 35 memset(a,0,sizeof(f)); 36 for(i = 1; i <= r; i++) 37 for(j = 1; j <= c; j++) 38 scanf("%d",&a[i][j]); 39 for(i = 1; i <= r; i++) 40 for(j = 1; j <= c; j++) 41 { 42 t = dfs(i,j); 43 if(t > max) 44 max = t; 45 } 46 printf("%s: %d\n",s,max); 47 } 48 return 0; 49 }