RT,提交上去20分,看起来没错了...
#include<iostream>
using namespace std;
int goy[5]={0,1,0,0,-1},gox[5]={0,0,1,-1,0},start[3],over[3],n,m,a[16][16]={0},w[226][3],sum=0,b[16][16]={0};
void print(int n)
{
int i;
cout<<"("<<start[1]<<","<<start[2]<<")";
for(i=2;i<=n;i++)
{
cout<<"->("<<w[i][1]<<","<<w[i][2]<<")";
}
cout<<endl;
sum++;
return;
}
void dfs(int x,int y,int t)
{
int i,tx,ty;
if (x==over[1]&&y==over[2])
{
print(t);
return;
}
for(i=1;i<=4;i++)
{
tx=x;
ty=y;
tx+=gox[i];
ty+=goy[i];
if (tx<1||tx>n||ty<1||ty>n)
continue;
if (a[tx][ty]==1&&b[tx][ty]==0)
{
b[tx][ty]=1;
w[t][1]=tx,w[t][2]=ty;
//cout<<tx<<" "<<ty<<endl;
dfs(tx,ty,t+1);
b[tx][ty]=0;
}
}
}
int main()
{
cin>>n>>m;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
cin>>start[1]>>start[2]>>over[1]>>over[2];
dfs(start[1],start[2],1);
if (sum==0)
cout<<-1;
return 0;
}