UVA 572-Oil Deposits

Oil Deposits

利用DFS深度优先算法 

#include<cstdio>
#include<cstring>
char a[105][105];
int b[105][105];
int m,n;
void dfs(int x,int y,int ans)
{
	if(x<0||x>=m||y<0||y>=n) return;
	if(b[x][y]>0||a[x][y]=='*') return;
	b[x][y]=ans;
	for(int k=-1;k<=1;k++)
	    for(int t=-1;t<=1;t++)
	      if(k!=0||t!=0)
	         dfs(x+k,y+t,ans);
}
int main()
{
	while(scanf("%d%d",&m,&n)!=EOF)
	{
		if(m==0&&n==0) break;
		int count=0;
		memset(b,0,sizeof(b));
		for(int i=0;i<m;i++)
			scanf("%s",&a[i]);
		for(int i=0;i<m;i++)
		   for(int j=0;j<n;j++)
		      if(b[i][j]==0&&a[i][j]=='@')
		        dfs(i,j,++count);
	    printf("%d\n",count);
	}
	return 0;
}
点赞