dalao们能不能看看小菜鸡的全WA代码

P1913 L国的战斗之伞兵

@[1004779564bzbjj](/user/465055) ~~好臭的数组~~ 回溯搜索啥的建议用函数 整体思路和你这个差不多,枚举每一个位置,用深搜去搜,能不能到无风区 但我属实没看懂你这种……~~递推式回溯~~(瞎编的别在意 你试试用递归?
by Max6700 @ 2023-07-28 12:04:45


~~毫无逻辑性的一段话[啸]~~
by Max6700 @ 2023-07-28 12:08:02


~~不小心mle了~~
by Max6700 @ 2023-07-28 12:21:45


~~然后tle~~
by Max6700 @ 2023-07-28 12:23:16


emm……确实可以倒推,从无风的地方开始搜,会优化有点[恍然大雾]
by Max6700 @ 2023-07-28 12:27:53


``` #include<bits/stdc++.h> using namespace std; int n,m; char a[1010][1010];//地图 bool v[1010][1010];//标记 long long cnt;//总数,应该不会爆,习惯 void dfs(int x,int y)//深搜 { if(!(x>=1 && x<=n && y>=1 && y<=m))//越界 return ; v[x][y]=1; if(a[x][y-1]=='r')dfs(x,y-1);//右(倒推,反着) if(a[x][y+1]=='l')dfs(x,y+1);//左(倒推,反着) if(a[x+1][y]=='u')dfs(x+1,y);//上(倒推,反着) if(a[x-1][y]=='d')dfs(x-1,y);//下(倒推,反着) } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(a[i][j]=='o') dfs(i,j); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(v[i][j])//能走,总数+1 cnt++; cout<<cnt; return 0; } ``` ~~难看的码风~~
by Max6700 @ 2023-07-28 12:32:59


|