dfs代码贴上:
#include <iostream>
using namespace std;
const int N=20;
bool visit[N][N];
bool mp[N][N];
int a[50005][2];
int sx,sy,fx,fy;
int ans=0;
int step=1;
int n,m;
int dx[]={0,-1,0,1,0};
int dy[]={0,0,-1,0,1};
inline void print()
{
cout<<"("<<a[0][0]<<","<<a[0][1]<<")";
for(int i=1;a[i][0]!=0 && a[i][1]!=0;i++){
cout<<"->"<<"("<<a[i][0]<<","<<a[i][1]<<")";
}
cout<<endl;
}
void dfs(int x,int y)
{
if(x==fx && y==fy)
{
print();
ans++;
return;
}
else
{
for(int i=1;i<=4;i++){
int nx=x+dx[i];
int ny=y+dy[i];
if(mp[nx][ny] && !visit[nx][ny])
{
step++;
a[step][0]=nx;
a[step][1]=ny;
visit[nx][ny]=true;
dfs(nx,ny);
visit[nx][ny]=false;
step--;
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mp[i][j];
}
}
cin>>sx>>sy;
cin>>fx>>fy;
a[0][0]=sx;
a[0][1]=sy;
dfs(sx,sy);
if(ans==0)cout<<"-1"<<endl;
return 0;
}