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...