1 #include <iostream>
2 #include <cstdio>
3 #include <cmath>
4 #include <cstring>
5 #include <algorithm>
6 #include <queue>
7 using namespace std;
8 int a[10][10],vis[10][10];
9 int dis[100][2],co[100][2],dir[4][2]={-1,0,1,0,0,1,0,-1},mi;
10 void dfs(int x,int y,int step)
11 {
12 int xx,yy;
13 if(x==4&&y==4)
14 {
15 if(step<mi)
16 {
17 mi=step;
18 for(int i=0;i<=step;i++)
19 {
20 co[i][0]=dis[i][0];
21 co[i][1]=dis[i][1];
22 }
23 }
24 return;
25 }
26 for(int i=0;i<4;i++)
27 {
28 xx=x+dir[i][0];
29 yy=y+dir[i][1];
30 if(xx>=0&&yy>=0&&xx<5&&yy<5&&a[xx][yy]==0&&vis[xx][yy]==0)
31 {
32 vis[xx][yy]=1;
33 dis[step+1][0]=xx;
34 dis[step+1][1]=yy;
35 dfs(xx,yy,step+1);
36 vis[xx][yy]=0;
37 }
38 }
39 }
40 int main(int argc, char *argv[])
41 {
42 for(int i=0;i<5;i++)
43 for(int j=0;j<5;j++)
44 scanf("%d",&a[i][j]);
45 memset(vis,0,sizeof(vis));
46 mi=0x3f;
47 dis[0][0]=0;dis[0][1]=0;
48 vis[0][0]=1;
49 dfs(0,0,0);
50 for(int i=0;i<=mi;i++)
51 {
52 printf("(%d, %d)\n",co[i][0],co[i][1]);
53 }
54 return 0;
55 }