杭电 2952 Counting Sheep

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int n,m;

char map[105][105];

int hash[105][105];

int isok(int i,int j)

{

	if(i>=0&&i<n&&j>=0&&j<m&&map[i][j]=='#'&&!hash[i][j])

	{

		return 1;

	}

	return 0;

}

void DFS(int x,int y)

{

	hash[x][y]=1;

	if(isok(x+1,y))

	{

		DFS(x+1,y);

	}

	if(isok(x-1,y))

	{

		DFS(x-1,y);

	}

	if(isok(x,y+1))

	{

		DFS(x,y+1);

	}

	if(isok(x,y-1))

	{

		DFS(x,y-1);

	}

}

int main()

{

	int t;

	scanf("%d",&t);

	while(t--)

	{

		scanf("%d%d",&n,&m);

		for(int i=0;i<n;i++)

		{

			scanf("%s",map[i]);

		}

		memset(hash,0,sizeof(hash));

		int s=0;

		for(int i=0;i<n;i++)

		{

			 for(int j=0;j<m;j++)

			 {

				  if(isok(i,j))

				  {

					  s++;

					  DFS(i,j);

				  }

			 }

	    }

	    printf("%d\n",s);

	}

	//system("pause");

	return 0;

}

  

你可能感兴趣的:(count)