dfs爆搜60分
#include<iostream>
#include<cstdio>
using namespace std;
int pathx[20],pathy[20];
int n,m;
bool a[20][20];
bool bj[20][20];
bool output;
int x,y,x2,y2;
void print(int f)
{
for(int i=1;i<f;++i)
{
printf("(%d,%d)->",pathx[i],pathy[i]);
}
printf("(%d,%d)\n",x2,y2);
return;
}
void dfs(int deep,int x,int y)
{
if(x>n||x<1||y>m||y<1||bj[x][y]==1||a[x][y]==0)
{
return;
}
if(x==x2&&y==y2)
{
print(deep);
output=1;
return;
}
pathx[deep]=x,pathy[deep]=y;
bj[x][y]=1;
dfs(deep+1,x,y-1);
dfs(deep+1,x-1,y);
dfs(deep+1,x,y+1);
dfs(deep+1,x+1,y);
bj[x][y]=0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
cin>>a[i][j];
}
}
cin>>x>>y>>x2>>y2;
dfs(1,x,y);
if(output==0)
{
cout<<-1<<endl;
}
}