还是有两个点TLE了,求助大佬改怎么改

P1596 [USACO10OCT] Lake Counting S

@[yiban202241040105](/user/890929) 40行左右的递归非要写成bfs。 和你的bfs思路一样,往8个方向拓展就行了。 ```cpp #include<bits/stdc++.h> #define ll long long using namespace std; const int N=110; ll n,m; ll s; char c[N][N]; ll sx[8]={0,1,0,-1,-1,1,-1,1};<<八个x方向 ll sy[8]={1,0,-1,0,-1,1,1,-1};<<八个y方向 void kz(ll x,ll y)<<拓展 { if(c[x][y]=='W'&&x>=1&&x<=n&&y>=1&&y<=m) { c[x][y]='.';<<将搜到的W全都换成. for(int i=0;i<8;i++) kz(x+sx[i],y+sy[i]); } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>c[i][j]; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(c[i][j]=='W') { s++; kz(i,j); } } } cout<<s; return 0; } ``` 而且bfs不是正解,容易超时。
by Aventurine_stone @ 2023-11-04 16:34:42


|