1 #include <iostream>
2 using namespace std;
3 #define SIZE 5
4 int Dx[4]={0,0,1,-1};
5 int Dy[4]={1,-1,0,0};
6 int maze[SIZE][SIZE];
7 int map[SIZE][SIZE];
8 int num=0;
9 int minnum=1000000;
10 int minx[1000];
11 int miny[1000];
12 int tx[1000];
13 int ty[1000];
14 void migong(int x,int y);
15
16 bool safe(int x,int y);
17
18 int main()
19 {
20 for(int i=0;i<SIZE;i++)
21 {
22 for(int j=0;j<SIZE;j++)
23 {
24 cin >>maze[i][j];
25 }
26 }
27 for(int i=0;i<SIZE;i++)
28 {
29 for(int j=0;j<SIZE;j++)
30 {
31 map[i][j]=maze[i][j];
32 }
33 }
34 migong(0,0);
35 for(int i=0;i<=minnum;i++)
36 {
37 cout <<"("<<minx[i]<<", "<<miny[i]<<")"<<endl;
38 }
39 return 0;
40 }
41
42
43 void migong(int x,int y)
44 {
45 int mx;
46 int my;
47 tx[num]=x;
48 ty[num]=y;
49 if(x==4&&y==4)
50 {
51 if(num<minnum)
52 {
53 minnum=num;
54 int j=0;
55 for(j=0;j<=minnum;j++)
56 {
57 minx[j]=tx[j];
58 miny[j]=ty[j];
59 }
60
61 }
62
63 return;
64 }
65 for(int i=0;i<4;i++)
66 {
67 mx=x+Dx[i];
68 my=y+Dy[i];
69
70 if(safe(mx,my)&&map[mx][my]!=2)
71 {
72 map[mx][my]=2;
73 num++;
74 migong(mx,my);
75 tx[num]=0;
76 ty[num]=0;
77 num--;
78 map[mx][my]=0;
79 }
80 }
81 }
82
83 bool safe(int x,int y)
84 {
85 bool ret=true;
86 if(x<0||x>=SIZE||y<0||y>=SIZE||map[x][y]==1)
87 ret=false;
88 return ret;
89 }
90