版权声明:转载请注明出处。 https://blog.csdn.net/u014427196/article/details/41524525

http://acm.hdu.edu.cn/showproblem.php?pid=1241

水题

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "math.h"

int m,n;
int i,j,k,visit[100][100];
char a[100][100];

int main()
{
    void dfs(int ,int  );
    while(scanf("%d%d",&m,&n)!=EOF && m && n )
    {

         for(int i=0;i<m;i++)
              {
                  scanf("%s",a[i]);
                    for(int j=0;j<n;j++)
                        a[i+1][j+1]='*';
         }
        int count=0;
         memset(visit,0,sizeof(visit));

        for(i=0;i<m;i++)
                for(j=0;j<n;j++)
        if(!visit[i][j] && a[i][j]=='@')
        {
            count++;
            dfs(i,j);
        }
        printf("%d\n",count);
    }
}


void dfs(int i,int j )
{
    if(!visit[i][j] && a[i][j]=='@')
    {
        visit[i][j]=1;
        dfs(i-1,j-1);dfs(i-1,j);dfs(i-1,j+1);
        dfs(i,j-1);             dfs(i,j+1);
        dfs(i+1,j-1);dfs(i+1,j);dfs(i+1,j+1);
    }
}