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 }

你可能感兴趣的:(c)