#include<iostream>
#include<cstdio>
using namespace std;
short map[20][20],L[10001][2];
bool M[20][20]={0},flag=false;
int endx,endy;
void dfs(int,int,int);
void print(int);
const int X[4]={-1,0,1,0},Y[4]={0,1,0,-1};
int main()
{
int n,m,strx,stry;
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
cin>>map[i][j];
cin>>strx>>stry>>endx>>endy;
dfs(strx,stry,0);
if (!flag) cout<<-1;
return 0;
}
void dfs(int x,int y,int s)
{
if (x==endx&&y==endy)
{
print(s);
flag=true;
return ;
}
for (int i=0;i<4;i++)
{
x+=X[i];y+=Y[i];
if (map[x][y]&&!M[x][y])
{
M[x-X[i]][y-Y[i]]=true;
L[s+1][0]=x-X[i];L[s+1][1]=y-Y[i];
dfs(x,y,s+1);
M[x-X[i]][y-Y[i]]=false;
}
x-=X[i];y-=Y[i];
}
return ;
}
void print(int a)
{
for (int i=1;i<=a;i++)
printf("(%d,%d)->",L[i][0],L[i][1]);
printf("(%d,%d)",endx,endy);
cout<<endl;
return ;
}
只有60分。。。
通过下载数据点发现貌似是顺序搞错了???
但不知道怎么改啊!!!!!!!
救救孩子!!!!!!!!