#include<stdio.h>
#include<algorithm>
using namespace std;
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
int maze[5][5],temproad[25][2],pos=0;
struct road
{
int r[30][2];//记录路径
int step;
}s[50];
int dfs(int x,int y,int step)
{
if(x==4&&y==4)
{
s[pos].step=step;
for(int i=1;i<step;i++)
{
s[pos].r[i][0]=temproad[i][0];//记录临时路径
s[pos].r[i][1]=temproad[i][1];
}
pos++;
return ;
}
for(int i=0;i<4;i++)
{
int X=x+dir[i][0],Y=y+dir[i][1];
if(X>=0&&Y>=0&&X<5&&Y<5&&!maze[X][Y])
{
maze[X][Y]=1;
temproad[step][0]=X;temproad[step][1]=Y;
dfs(X,Y,step+1);//回溯
maze[X][Y]=0;
}
}
}
int main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
scanf("%d",&maze[i][j]);
dfs(0,0,1);
int ans=0;
for(int i=1;i<pos;i++)
if(s[i].step<s[ans].step)
ans=i;
for(int i=0;i<s[ans].step;i++)
printf("(%d, %d)\n",s[ans].r[i][0],s[ans].r[i][1]);
return 0;
}
点击打开链接