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