北国飘雨
思念的季节
posts - 1, comments - 0, trackbacks - 0, articles - 11
C++博客
首页
新随笔
联系
管理
聚合
迷宫求解问题
一.栈求解一条通路(可以判断是否有通路)
#include
<
iostream
>
#include
<
stack
>
using
namespace
std;
#define
m 6
#define
n 8
int
maze[
8
][
10
]
=
{
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
}
;
typedef
struct
{
int
x;
int
y;
}
item;
item move[
8
]
=
{
{
0
,
1
}
,
{
1
,
1
}
,
{
1
,
0
}
,
{
1
,
-
1
}
,
{
-
1
,
0
}
,
{
-
1
,
-
1
}
,
{
0
,
-
1
}
,
{
1
,
-
1
}
}
;
typedef
struct
{
int
x,y,d;
}
SeqStack;
stack
<
SeqStack
>
s;
int
path()
{
while
(
!
s.empty()) s.pop();
int
x,y,d,i,j;
SeqStack temp;
temp.x
=
1
;
temp.y
=
1
;
temp.d
=-
1
;
s.push(temp);
while
(
!
s.empty())
{
temp
=
s.top();
s.pop();
x
=
temp.x;
y
=
temp.y;
d
=
temp.d
+
1
;
while
(d
<
8
)
{
i
=
x
+
move[d].x;
j
=
y
+
move[d].y;
if
(maze[i][j]
==
0
)
{
//
temp={x,y,d};
temp.x
=
x;
temp.y
=
y;
temp.d
=
d;
s.push(temp);
x
=
i;
y
=
j;
maze[x][y]
=-
1
;
if
(x
==
m
&&
y
==
n)
return
1
;
else
d
=
0
;
}
else
d
++
;
}
}
return
0
;
}
int
main()
{
int
i,j;
//
print maze
for
( i
=
2
;i
<
8
;i
++
)
{
for
(j
=
2
;j
<
10
;j
++
)
cout
<<
maze[i][j]
<<
"
"
;
cout
<<
endl;
}
//
print move
for
(i
=
0
;i
<
8
;i
++
)
cout
<<
move[i].x
<<
"
"
<<
move[i].y
<<
endl;
cout
<<
(path()
==
1
?
"
迷宫有路!\n
"
:
"
迷宫无路!\n
"
);
SeqStack temp;
while
(
!
s.empty())
{
temp
=
s.top();
s.pop();
printf(
"
(%d,%d,%d)-->
"
,temp.x,temp.y,temp.d);
}
printf(
"
\n
"
);
return
0
;
}
Posted on 2009-06-07 19:32
北国飘雨
阅读(107)
评论(0)
编辑
收藏
引用
所属分类:
ACM
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
简单几何
动态规划专题
输出格式专题
24 点问题储备
回溯专题
迷宫求解问题
精度总结
重点总结
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
<
2025年7月
>
日
一
二
三
四
五
六
29
30
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
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
(1)
2010年5月 (1)
文章分类
(11)
ACM(8)
C/C++基础知识(2)
风中细语(1)
文章档案
(11)
2009年11月 (1)
2009年6月 (10)
搜索
最新随笔
1. 第四届吉大中软杯ACM程序设计大赛总结
最新评论