数组从 $0$ 开始,为什么 $\le n$ 呢?
这不就有 $n+1$ 行了吗?
by Liyhzh_C202712 @ 2024-04-14 22:03:29
改了之后 `WA` 一个点……
by Liyhzh_C202712 @ 2024-04-14 22:04:26
不开 O2 就能过
by Liyhzh_C202712 @ 2024-04-14 22:07:08
@[lucy2012](/user/1252442)
by Liyhzh_C202712 @ 2024-04-14 22:10:06
@[lucy2012](/user/1252442) 其实简单的二维 dfs 就可以。
by wzj0829 @ 2024-04-14 22:11:10
@[Liyhzh_C202712](/user/1068500) 是哪里$<=0$了腻?QwQ
by lucy2012 @ 2024-04-15 20:19:16
@[wzj0829](/user/1028403) 用dfs做了一次,不过要用这个当bfs模板^w^|||
by lucy2012 @ 2024-04-15 20:21:01
@[lucy2012](/user/1252442) 6
by wzj0829 @ 2024-04-15 20:23:10
这样吗
```cpp
#include<bits/stdc++.h>
using namespace std;
int n, m, vis[110][110],sum=0;
int d[4][2]={{ -1, 0},{ 0, -1},{ 1, 0},{ 0, 1}};
char ch[110][110];
struct node {
int x, y;
} q[110];
void bfs(int x,int y){
int head = 1,tail = 1;
q[tail].x = x;
q[tail].y = y;
tail++;
while(head < tail){
int x1 = q[head].x;
int y1 = q[head].y;
vis[x1][y1] = 1;
for(int i = 0;i < 4; i++){
int nx = x1 + d[i][0];
int ny = y1 + d[i][1];
if(nx >= 0&&nx < n&& ny >= 0&& ny < m&& ch[nx][ny] != '0'&&!vis[nx][ny]){
q[tail].x = nx;
q[tail].y = ny;
tail++;
vis[nx][ny]=1;
}
}
head++;
}
}
int main(){
cin>> n >> m;
for(int i = 0; i < n; i++)
scanf("%s", ch[i]);
for(int i = 0; i < n; i++){
for(int j = 0;j < m; j++){
if(ch[i][j] != '0'&& !vis[i][j]){
sum++;
bfs(i, j);
}
}
}
cout<< sum;
return 0;
}
```
by lucy2012 @ 2024-04-15 21:29:40
@[Liyhzh_C202712](/user/1068500) 谢谢啦,我再问问O2的问题
by lucy2012 @ 2024-04-15 21:31:58