ECNU2848(dfs)

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 const int dx[]={0,0,1,-1};
 4 const int dy[]={1,-1,0,0};//走的方向
 5 char map[1005][100];
 6 int max,hang,lie;
 7 int fmax(int p,int q)
 8 {
 9 if(p>q)
10 return p;
11 else
12 return q;
13 }
14 int dfs(int i,int j)
15 {
16 int ddx,ddy,k,tp;
17 map[i][j]='.';
18 tp=1;
19 for(k=0;k<4;k++)
20 {
21 ddx=i+dx[k];
22 ddy=j+dy[k];
23 if(map[ddx][ddy]=='*')
24 {
25 tp=tp+dfs(ddx,ddy);
26 }
27 }
28 return tp;
29 }
30 int main()
31 {
32 int i,j;
33 while(scanf("%d%d",&lie,&hang)==2)
34 {
35 getchar();
36 memset(map,'.',sizeof(map));//初始化该地图
37 for(i=1;i<=hang;i++)
38 {
39 for(j=1;j<=lie;j++)
40 scanf("%c",&map[i][j]);
41 getchar();
42 }
43 max=0;
44 for(i=1;i<=hang;i++)
45 for(j=1;j<=lie;j++)
46 {
47 if(map[i][j]=='*')
48 max=fmax(max,dfs(i,j));
49 }
50 printf("%d\n",max);
51 }
52 return 0;
53 }

  

keep moving...
原文地址:https://www.cnblogs.com/xxx0624/p/2472764.html