poj 3984 迷宫问题
迷宫问题
1
2
3
4 /*************************************************************************
5 > File Name: code/2015summer/searching/KK.cpp
6 > Author: 111qqz
7 > Email: rkz2013@126.com
8 > Created Time: 2015年07月25日 星期六 13时33分00秒
9 ************************************************************************/
10
11 #include<iostream>
12 #include<iomanip>
13 #include<cstdio>
14 #include<algorithm>
15 #include<cmath>
16 #include<cstring>
17 #include<string>
18 #include<map>
19 #include<set>
20 #include<queue>
21 #include<vector>
22 #include<stack>
23 #define y0 abc111qqz
24 #define y1 hust111qqz
25 #define yn hez111qqz
26 #define j1 cute111qqz
27 #define tm crazy111qqz
28 #define lr dying111qqz
29 using namespace std;
30 #define REP(i, n) for (int i=0;i<int(n);++i)
31 typedef long long LL;
32 typedef unsigned long long ULL;
33 int a[10][10];
34 int head = 0;
35 int tail = 1;
36 int dirx[2]={1,0};
37 int diry[2]={0,1};
38 struct node
39 {
40 int x,y,pre;
41 }q[10];
42
43 void print(int x)
44 {
45 if (q[x].pre!=-1)
46 {
47 print(q[x].pre);
48 printf("(%d, %d)\n",q[x].x,q[x].y);
49 }
50 }
51 void bfs()
52 {
53 q[head].x=0;
54 q[head].y=0;
55 q[head].pre=-1;
56 while (head<tail)
57 {
58 if (q[head].x==4&&q[head].y==4)
59 {
60 print(head);
61 return;
62 }
63 for (int i = 0 ; i < 2 ; i++ )
64 {
65 int newx=dirx[i]+q[head].x;
66 int newy=diry[i]+q[head].y;
67 if (newx>=0&&newx<5&&newy>=0&&newy<5&&a[newx][newy]==0)
68 {
69 q[tail].x=newx;
70 q[tail].y=newy;
71 q[tail].pre=head;
72 tail++;
73 }
74 }
75 head++;
76 }
77
78 }
79 int main()
80 {
81 for ( int i = 0 ; i < 5 ; i++ )
82 {
83 for ( int j = 0 ; j < 5; j++)
84 {
85 cin>>a[i][j];
86 }
87 }
88 printf("(0, 0)\n");
89 bfs();
90
91 return 0;
92 }
93
94
95