来到一个点要标记已来过,而且要判断-1的情况。
可以参考我的代码:
```cpp
#include <iostream>//qwq
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
int m,n,map[15][15],sum[50000][2]/*记录每步的坐标*/,ax,ay/*起点*/,bx,by/*终点*/,k/*步数*/,pd;
int cx[4] = {0,-1,0,1};
int cy[4] = {-1,0,1,0};
bool temp[15][15];
void go(int x,int y){//搜索回溯
if (x == bx && y == by){
if (!pd) pd = 1;
for (int h = 0;h <= k - 1;h++) printf("(%d,%d)->",sum[h][0],sum[h][1]);
printf("(%d,%d)\n",bx,by);
}
else for (int i = 0;i <= 3;i++) if (map[x + cx[i]][y + cy[i]] && !temp[x + cx[i]][y + cy[i]]){
temp[x][y] = true,sum[k][0] = x,sum[k][1] = y,k++;
go(x + cx[i],y + cy[i]);
temp[x][y] = false,k--;//回溯
}
}
int main(){
cin >> m >> n;
for (int i = 1;i <= m;i++) for (int j = 1;j <= n;j++) cin >> map[i][j];
cin >> ax >> ay >> bx >> by;
go(ax,ay);
if (pd == 0) cout << -1;
return 0;
}
```
by Zoe_888 @ 2024-04-25 17:50:18
@[Zoe_888](/user/556181)
这个是我改后的代码,为什么还是不对?
```cpp
#include <iostream>
using namespace std;
int n,m;
int pic[100][100];
struct pos{
int x,y;
};
bool vis[100][100]={0};
pos a,b;
int dfs(pos a1,pos b1){
cout<<"("<<a1.x<<","<<a1.y<<")";
if (a1.x==b1.x&&a1.y==b1.y){
cout<<endl;
return 0;
}
cout<<"->";
if (a1.y-1>=1&&pic[a1.x][a1.y-1]==1&&vis[a1.x][a1.y-1]==0){
vis[a1.x][a1.y-1]=1;
pos f={a1.x,a1.y-1};
dfs(f,b1);
vis[a1.x-1][a1.y]=0;
}
if (a1.x-1>=1&&pic[a1.x-1][a1.y]==1&&vis[a1.x-1][a1.y]==0){
vis[a1.x-1][a1.y]=1;
pos f={a1.x-1,a1.y};
dfs(f,b1);
vis[a1.x-1][a1.y]=0;
}
if (a1.y+1<=n&&pic[a1.x][a1.y+1]==1&&vis[a1.x][a1.y+1]==0){
vis[a1.x][a1.y+1]=1;
pos f={a1.x,a1.y+1};
dfs(f,b1);
vis[a1.x-1][a1.y]=0;
}
if (a1.x+1<=n&&pic[a1.x+1][a1.y]==1&&vis[a1.x+1][a1.y]==0){
vis[a1.x+1][a1.y]=1;
pos f={a1.x+1,a1.y};
dfs(f,b1);
vis[a1.x+1][a1.y]=0;
}
return 0;
}
int main(){
vis[1][1]=1;
cin>>n>>m;
for (int i=1;i<=n;i++){
for (int j=1;i<=m;j++){
cin>>pic[i][j];
}
}
cin>>a.x>>a.y>>b.x>>b.y;
dfs(a,b);
return 0;
}
```
by love20110429 @ 2024-04-25 18:00:15
@[love20110429](/user/1095806) (TLE)
by love20110429 @ 2024-04-25 18:00:52
@[love20110429](/user/1095806) 斯哈,说不清了
by Zoe_888 @ 2024-04-25 18:12:12