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,本人在本地调试时看不出问题,求大佬指教