以栈解决迷宫问题
来源:互联网 发布:java hex jar包 编辑:程序博客网 时间:2024/04/29 21:27
1
2
3
4
5
struct
Pos
{
size_t
line;
size_t
row;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if
(pos.row>0 && maze[pos.line * 10 + pos.row - 1] == 1)
//左
{
p.push(pos.line * 10 + pos.row);
pos.row--;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
if
(pos.row < 9 && maze[pos.line * 10 + pos.row + 1] == 1)
//右
{
p.push(pos.line * 10 + pos.row);
pos.row++;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
if
(pos.line > 0 && maze[(pos.line - 1) * 10 + pos.row] == 1)
//上
{
p.push(pos.line * 10 + pos.row);
pos.line--;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
if
(pos.line < 9 && maze[(pos.line + 1) * 10 + pos.row] == 1)
//下
{
p.push(pos.line * 10 + pos.row);
pos.line++;
maze[(pos.line * 10 + pos.row)] = 2;
}
1
2
3
4
maze[(pos.line * 10 + pos.row)] = 3;
pos.line = p.top() / 10;
pos.row = p.top() - pos.line*10;
p.pop();
1
2
3
4
5
if
(pos.line * 10 + pos.row == 91)
{
PrintMaze(maze);
return
1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<assert.h>
#include<stack>
using
namespace
std;
struct
Pos
{
size_t
line;
size_t
row;
};
void
InitMaze(
int
*maze)
{
FILE
*p =
fopen
(
"maze.txt"
,
"r"
);
for
(
int
i = 0; i < 10; i++)
{
for
(
int
j = 0; j < 10;)
{
int
tmp =(
int
)(
fgetc
(p))-
'0'
;
if
(tmp == 0)
maze[i*10+j] = 0;
if
(tmp == 1)
maze[i*10+j] = 1;
if
(tmp == 1 || tmp == 0)
j++;
}
}
fclose
(p);
}
void
PrintMaze(
int
*maze)
{
for
(
int
i = 0; i < 10; i++)
{
for
(
int
j = 0; j < 10; j++)
{
cout << maze[i * 10 + j] <<
" "
;
}
cout << endl;
}
cout << endl;
}
int
GoMaze(
int
*maze,Pos start)
{
assert
(maze);
stack<
int
> p;
Pos pos;
pos.line = start.line;
pos.row = start.row;
while
(1)
{
maze[(pos.line * 10 + pos.row)] = 2;
if
(pos.row>0 && maze[pos.line * 10 + pos.row - 1] == 1)
//左
{
p.push(pos.line * 10 + pos.row);
pos.row--;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
if
(pos.row < 9 && maze[pos.line * 10 + pos.row + 1] == 1)
//右
{
p.push(pos.line * 10 + pos.row);
pos.row++;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
if
(pos.line > 0 && maze[(pos.line - 1) * 10 + pos.row] == 1)
//上
{
p.push(pos.line * 10 + pos.row);
pos.line--;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
if
(pos.line < 9 && maze[(pos.line + 1) * 10 + pos.row] == 1)
//下
{
p.push(pos.line * 10 + pos.row);
pos.line++;
maze[(pos.line * 10 + pos.row)] = 2;
}
else
{
maze[(pos.line * 10 + pos.row)] = 3;
pos.line = p.top() / 10;
pos.row = p.top() - pos.line*10;
p.pop();
}
if
(pos.line * 10 + pos.row == 91)
{
PrintMaze(maze);
return
1;
}
}
}
void
Mazetest()
{
int
maze[10][10];
Pos p;
p.line = 2;
p.row = 0;
InitMaze((
int
*)maze);
PrintMaze((
int
*)maze);
GoMaze((
int
*)maze,p);
}
int
main()
{
Mazetest();
return
0;
}
0 0
- 以栈解决迷宫问题
- 利用栈解决迷宫问题
- 用栈解决迷宫问题
- 使用栈解决迷宫问题
- 用栈解决迷宫问题
- 解决迷宫问题, 栈和队列
- 【数据结构】使用栈Stack解决迷宫问题
- 数据结构-顺序栈解决迷宫问题
- 栈和递归---解决迷宫问题
- 栈和递归解决迷宫问题
- 用栈和递归解决迷宫问题
- C++ 解决迷宫问题
- c解决迷宫问题
- 迷宫问题bfs解决
- OOP解决迷宫问题
- java解决迷宫问题
- 穷举解决走迷宫问题
- java解决迷宫问题(鲍志强)
- Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别
- linux命令tail
- C# EventHandler 委托
- linux 进程启动方式
- Pixhawk(APM固件) ArduPilot的遥控器读取及油门转换
- 以栈解决迷宫问题
- Asteroids_poj3041_最大匹配
- 第十六周程序阅读(7)
- python的turtle画图软件包的使用
- Swift 读取,处理Json数据
- Python写的网络爬虫程序
- Unity 脚本生命周期流程图
- PHP的UTF-8中文转拼音处理类
- 三个基本设计模式