不知道过了多少天了,才做了一题,还是抄的,感觉我好失败啊!苦逼的菜鸟,还有很长的路要走……

不过我要严肃声明,凡是我贴出来的代码,都是我完全理解、能够自己独立敲出来的,并不是为了应付。

 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 }