```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