大佬求助
查看原帖
大佬求助
1418967
Tomwsc楼主2024/8/13 13:08

ans一直不对(除了0)

#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0;
int dx[8]={0,1,-1,0,1,1,-1,-1};
int dy[8]={1,0,0,-1,1,-1,1,-1};
int p[10005];
int q[10005];
char a[105][105];
bool flag[105][105]={false};
void bfs(int x1,int y1)
{
	memset(p,0,sizeof(p));
	memset(q,0,sizeof(q));
	int head=0,tail=1;
	p[1]=x1;
	q[1]=y1;
	do
	{
		head++;
		for(int i=0;i<8;i++)
		{
			int xx=p[head]+dx[i];
			int yy=q[head]+dy[i];
			tail++;
			if(xx<=0 || yy<=0 || xx>=n || yy>=m || flag[xx][yy] || a[xx][yy]!='W')
			{
				tail--;
				continue;
			}
			else
			{
				flag[xx][yy]=true;
				p[tail]=xx;
				q[tail]=yy;
			}
		}
	}while(head<tail);
	return;
}
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' && !flag[i][j]){
				bfs(i,j);
				ans++;
			}
		}
	}
	cout<<ans;
	return 0;
}
2024/8/13 13:08
加载中...