#include <iostream>
#include <cstring>
using namespace std;
struct pointin{
int x,y,fx;
};
int n,m,bx,by,zx,zy,qjbl;
bool ansf=false;
int vis[7][17];
int map[7][17];
char lx[10086];
pointin point[100];
int dx[4]={0,-1,0,1};
int dy[4]={-1,0,1,0};//0:左 1:上 2:右 3:下
void print(int num){
for (int i = 1;i<=num-1;i++){
cout<<"("<<point[i].x<<","<<point[i].y<<")->";
}
cout<<"("<<point[num].x<<","<<point[num].y<<")"<<endl;
}
void bfs(int x,int y,int step){
if (x==zx&&y==zy){
point[step].x=zx;point[step].y=zy;
qjbl=1;
print(step);
return ;
}
int yesican=0;
for (int i =0;i<4;i++){
point[step].x=x,point[step].y=y;
int nx=x+dx[i],ny=y+dy[i];
if ((map[nx][ny]==1&&vis[nx][ny]==0)&&(nx>=1&&nx<=n&&ny>=1&&ny<=m)){
vis[nx][ny]=1;
yesican=1;
step++;
bfs(nx,ny,step);
vis[nx][ny]=0;
step--;
}
}
return ;
}
int main(){
qjbl=0;
cin>>n>>m;
memset(vis,0,sizeof(vis));
for (int i = 1;i<=n;i++){
for (int j = 1;j<=m;j++){
cin>>map[i][j];
}
}
cin>>bx>>by>>zx>>zy;
bfs(bx,by,1);
if (qjbl==0){
cout<<-1<<endl;
}
return 0;
}
代码如上