蒟蒻求助
查看原帖
蒟蒻求助
754040
yeqiwei楼主2024/8/13 21:42

rt,代码如下:

#include<bits/stdc++.h>
using namespace std;
struct Node{
	int x,y;
	Node(int ax=0,int ay=0)
	{
		x=ax,y=ay;
	}
};
int n,m;
int num_of_find;
int ans;
char mp[100][100];
Node canfind[10000];
bool hadvis[100][100];
queue<Node> Q;
void bfs(int x,int y)
{
	bool flag=false;
	Q.push(Node(x,y));
	while(!Q.empty())
	{
		Node now=Q.front();
		Q.pop();
		x=now.x;
		y=now.y;
		if(x==n||y==m||x==-1||y==-1||mp[x][y]=='.')
			continue;
		hadvis[x][y]=true;
		flag=true;
		mp[x][y]='.';
		Q.push(Node(x-1,y));
		Q.push(Node(x-1,y-1));
		Q.push(Node(x+1,y));
		Q.push(Node(x+1,y-1));
		Q.push(Node(x,y-1));
		Q.push(Node(x,y+1));
		Q.push(Node(x-1,y-1));
		Q.push(Node(x+1,y+1));
	}
	if(flag)
		++ans;	
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=0;i<n;++i)
		for(int j=0;j<m;++j)
		{
			cin>>mp[i][j];
			if(mp[i][j]=='W')
				++num_of_find,canfind[num_of_find-1].x=i,canfind[num_of_find-1].y=j;
		}
	for(int i=0;i<num_of_find;++i)
		if(hadvis[canfind[i].x][canfind[i].y]==false)
			bfs(canfind[i].x,canfind[i].y);
	cout<<ans;
}

程序WA on #5~#10,本人在本地调试时看不出问题,求大佬指教

2024/8/13 21:42
加载中...