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