0分求助,悬关

P1454 圣诞夜的极光

大佬求助
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


|