10分求助

P1746 离开中山路

```cpp ans=max(ans,cnt); ``` 为什么要取max
by _Remake_ @ 2022-04-30 17:57:49


这题 DFS 过不了吧,得用 BFS (您似乎写的是 DFS 诶)
by xzy090626 @ 2022-04-30 18:01:31


正常的bfs不是用队列做的吗qwq 递归似乎不太好做
by _Remake_ @ 2022-04-30 18:04:37


谢谢
by Dream_weavers @ 2022-04-30 18:05:49


这好像是一种新算法,dfs 与 bfs 融为一体。
by 幸存者 @ 2022-04-30 18:10:54


```cpp #include<bits/stdc++.h> #define int long long int using namespace std; const int N=1234; int a[N][N]; bool vis[N][N]; int n,x1,x2,Y1,y2; char qwq[N]; int dx[4]={1,0,0,-1}; int dy[4]={0,-1,1,0}; queue<pair<int,pair<int,int> > >Q; int bfs(int x,int y) { Q.push(make_pair(x,make_pair(y,0))); while(Q.size()) { int X=Q.front().first; int Y=Q.front().second.first; vis[X][Y]=1; int step=Q.front().second.second; if(X==x2&&Y==y2) { return step; } Q.pop(); for(int r=0;r<=3;r++) { X+=dx[r]; Y+=dy[r]; if(!vis[X][Y]&&X>=1&&X<=n&&Y>=1&&Y<=n) { Q.push(make_pair(X,make_pair(Y,step+1))); vis[X][Y]=1; } X-=dx[r]; Y-=dy[r]; } } } signed main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>(qwq+1); for(int j=1;j<=n;j++) { if(qwq[j]=='1') { vis[i][j]=1; } } } cin>>x1>>Y1>>x2>>y2; cout<<bfs(x1,Y1); return 0; } ``` 把您的代码魔改了亿下然后A了 qwq
by _Remake_ @ 2022-04-30 18:16:38


此贴结,感谢各位,已经AC了
by Dream_weavers @ 2022-04-30 18:19:18


|