纯DFS!!!
#include<iostream>
using namespace std;
#define max 5
struct Node{
int x;
int y;
int a;
}no;
struct Node maze[max][max];
int nodex[5][25],nodey[5][25];//跟踪搜索
int jj=1,j[5],k=0;
int fxiang[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//移动向量
void dfs(int n,int m)
{
int i;
if(no.x==no.y&&no.x==4)
{
j[k]=jj;
k++;
return ;
}
maze[no.x][no.y].a=1;
for (i=0;i<4;i++)
{
no.x+=fxiang[i][0],no.y+=fxiang[i][1];
if(no.x>=0&&no.x<max&&no.y>=0&&no.y<max&&maze[no.x][no.y].a==0)
{
nodex[k][jj]=no.x;
nodey[k][jj]=no.y;
jj++;
dfs(no.x,no.y);
jj--;
}
no.x-=fxiang[i][0],no.y-=fxiang[i][1];
}
maze[no.x][no.y].a=0;
}
int main()
{
int i,h;
for(i=0;i<max;i++)
for(h=0;h<max;h++)
cin>>maze[i][h].a;
dfs(0,0);
int m=j[0];
h=0;
for (i=1;i<k;i++)
if(m>j[i])
{
m=j[i];
h=i;
}
//cout<<m<<endl;
for (i=0;i<m;i++)
cout<<'('<<nodex[h][i]<<", "<<nodey[h][i]<<')'<<endl;
return 0;
}