大佬求助
by Prisoner1 @ 2023-12-05 22:18:13
@[Prisoner1](/user/763540) 等于 `#` 的时候不用 continue 吧
by yhx0322 @ 2023-12-05 22:30:27
@[Prisoner1](/user/763540) 并且你准备 bfs 的那一段
```cpp
if(flag[i][j]==0 && s[i][j]!='#'){
```
也不对,应该改成 `s[i][j] == '#'` 因为是从发光的点开始搜的。
by yhx0322 @ 2023-12-05 22:32:02
@[Prisoner1](/user/763540) 还有字符串读入的时候我给你改了一下就对了。
```cpp
#include<bits/stdc++.h>
using namespace std;
int flag[1010][1010];
int a[100010]={0};
char s[1010][1010];
const int dx[20]={0,-1,0,1,0,-1,-1,1,1,-2,0,2,0};
const int dy[20]={0,0,1,0,-1,-1,1,1,-1,0,2,0,-2};
int n,m,x,y,ans=1,num=0;
void bfs(int startx,int starty){
queue<int>qx;
queue<int>qy;
flag[startx][starty]=1;
qx.push(startx);
qy.push(starty);
while(!qx.empty() && !qy.empty()){
int nowx,nowy;
nowx=qx.front();
nowy=qy.front();
qx.pop();
qy.pop();
for(int i=1;i<=12;i++){
int newx,newy;
newx=dx[i]+nowx;
newy=dy[i]+nowy;
if(newx>n || newx<1 || newy>m || newy<1)
{
continue;
}
if (!flag[newx][newy] && s[newx][newy] == '#') {
flag[newx][newy]=1;
qx.push(newx);
qy.push(newy);
}
}
}
}
int main( ){
cin>>n>>m;
for(int i=1;i<=n;i++){
scanf("%s", s[i] + 1);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(flag[i][j]==0 && s[i][j] =='#'){
bfs(i,j);
num++;
}
}
}
cout<<num;
return 0;
}
by yhx0322 @ 2023-12-05 22:37:42
@[yhx0322](/user/756826) 谢谢大佬,已经过了,感激不尽!!!
by Prisoner1 @ 2023-12-06 14:15:09
@[Prisoner1](/user/763540) 不客气。
by yhx0322 @ 2023-12-06 14:39:51