20分求助
查看原帖
20分求助
725788
zyabc楼主2022/7/19 21:06

如下,用的深度搜索,样例都能过,但是测试只有20分,大家帮忙看看错哪里了

using namespace std;

int N,M;
int waterNum=0;
char a[105][105];
void dfs(int x,int y)
{
	if(x<0||x>=N||y<0||y>=M||a[x][y]!='.') return;
	a[x][y]=waterNum+'0';
	dfs(x-1,y);
	dfs(x-1,y-1);
	dfs(x-1,y+1);
	dfs(x,y+1);
	dfs(x,y-1);
	dfs(x+1,y+1);
	dfs(x+1,y);
	dfs(x+1,y-1);

	
	
}
int main()
{
	char tmp;
	cin>>N>>M;
	for(int i=0;i<N;i++)
	{
		cin>>a[i];
	}

	for(int i=0;i<N;i++)
	{
		for(int j=0;j<M;j++)
		{	if(a[i][j]=='.')
			{	
				waterNum++;
				dfs(i,j);				
			}

		}

	}	
	cout<<waterNum;	
	
	return 0;
}
2022/7/19 21:06
加载中...