吃到彩虹糖,求调
查看原帖
吃到彩虹糖,求调
818329
zhangzhixuan1楼主2023/10/6 11:53
#include <bits/stdc++.h>
using namespace std;
int n,m,x[]={0,0,1,-1,1,-1,1,-1},y[]={1,-1,0,0,1,-1,-1,1},ans=0;
bool sr=false;
char a[101][101];
queue <int> qx,qy;
void bfs(int h,int l)
{
	a[h][l]='.';
	while(!qx.empty())
	{
		for(int i=0;i<=7;i++)
		{
			int xx=h+x[i];
			int yy=l+y[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='.')
			{
				sr=true;
				qx.push(xx);
				qy.push(yy);
			}
		}
		qx.pop();
		qy.pop();
		if(!qx.empty())bfs(qx.front(),qy.front());
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]=='W')
			{
				sr=false;
				qx.push(i),qy.push(j),bfs(i,j);
				if(sr==true)ans++;				
			} 
		}
	}	
	cout<<ans;
} 

2023/10/6 11:53
加载中...