最近不在状态,又要考试了,只好水一题。不过这绝不仅仅是个水题,这是我第一次参加比赛时不会做的一题,现在做了出来,感觉挺好的。

 1 #include<stdio.h>
 2 #include<string.h>
 3 int s[105][105],vis[105][105];
 4 int n,m,tmax;
 5 void dfs(int i,int j)
 6 {
 7     if(s[i][j] && !vis[i][j])
 8     {
 9         vis[i][j] = 1;
10         dfs(i-1,j);dfs(i,j-1);
11         dfs(i+1,j);dfs(i,j+1);
12         if(i > tmax) tmax = i;
13     }
14 }
15 int main()
16 {
17     int i,j;
18     while(~scanf("%d %d",&n,&m))
19     {
20         memset(vis,0,sizeof(vis));
21         memset(s,0,sizeof(s));
22         for(i = n; i > 0; i--)
23             for(j = 1; j <= m; j++)
24                 scanf("%d",&s[i][j]);
25         tmax = 1;
26         for(int j = 1; j <= m; j++)
27             dfs(1,j);
28         printf("%d\n",tmax);
29     }
30     return 0;
31 }