小问题一个!求教!

gimmyfox 2002-10-24 12:44:27
题目:用计算机模拟"迷宫问题",求出其中一条通道,用数组MAZE(1..M,1..N)表示迷宫,数组元素为1意味死路,为0表示通路,MAZE(1,1)为迷宫入口,MAZE(m,n)为迷宫出口,试设计一个算法判别迷宫问题是否有解?有解时则打印一条路径.

这个题目最好用pascal语言做,因为我们的数据结构是pascal版本的~5555

如果哪个知道c++版本的下载地址麻烦说一下了,谢谢!
...全文
65 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gimmyfox 2002-11-05
  • 打赏
  • 举报
回复
递归的我也会了,,我要堆栈的那种算法,拜托了.....
ForrestGumb 2002-11-03
  • 打赏
  • 举报
回复
这个程序是以前编的,没有改动就直接copy过来了。表示通路死路的标记0,1,2等,和你的要求不同。不过核心函数try()还是完全好用的嘛。如果迷宫有通路,这个迷宫就会被打印出来,图中标了1的就是通路。如果迷宫没有通路,迷宫就不会被打印出来。
我确实在主程序中自己画了一个迷宫,不过你也可以动态生成一个迷宫,或从文件读入一个迷宫。然后用try()函数来走一下可以了。
gimmyfox 2002-11-01
  • 打赏
  • 举报
回复
ForrestGumb(阿甘)兄 怎么我看你的程序就像是自己设计了一个迷宫 然后进去逛了一下~~

我想你是做过一个迷宫问题的题目 可是你还没看清我的题目吧
gimmyfox 2002-11-01
  • 打赏
  • 举报
回复
我本来以为没人来帮我了 所以我两天没来了

以前我可是天天来这里的....


对于ForrestGumb(阿甘)兄 我深表感谢!

这个问题可以结束了 散分!!!!
ForrestGumb 2002-10-30
  • 打赏
  • 举报
回复
正好我以前做过一个,好不容易从箱底给你翻出来了。
0表示道路。1表示正确路径。2表示墙。10表示出口。
program migong(input,output);
const
IX=10;JY=6;
var
a:array[1..IX,1..JY]of integer;
i,j:integer;
procedure print;
var
i,j:integer;
begin
for j:=1 to JY do
begin
for i:=1 to IX do
write(a[i][j]);
writeln;
end;
writeln;
end;
procedure try(i,j:integer); {0 for way;1 for right way;2 for wall;10 for exit}
var
bi,bj,d:integer;
begin
a[i][j]:=1;
for d:=1 to 4 do
case d of
1:if(i-1>=1)and(i-1<=IX)
then begin
bi:=i-1;bj:=j;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
2:if(j-1>=1)and(j-1<=JY)
then begin
bi:=i;bj:=j-1;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
3:if(i+1>=1)and(i+1<=IX)
then begin
bi:=i+1;bj:=j;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
4:if(j+1>=1)and(j+1<=JY)
then begin
bi:=i;bj:=j+1;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
end;
a[i][j]:=0;
end;
begin
for i:=1 to IX do
for j:=1 to JY do
a[i][j]:=0;
for i:=2 to 10 do
a[i][1]:=2;
for i:=1 to 8 do
a[i][6]:=2;
a[2][2]:=2;a[5][2]:=2;a[9][2]:=2;a[10][2]:=2;
a[4][3]:=2;a[5][3]:=2;a[7][3]:=2;a[10][3]:=2;
a[2][4]:=2;a[3][4]:=2;a[7][4]:=2;a[8][4]:=2;a[10][4]:=2;
a[5][5]:=2;a[10][5]:=2;
a[10][6]:=10;
{migong has drawn}
try(1,1);
end.
gimmyfox 2002-10-24
  • 打赏
  • 举报
回复
up 这个题目我有答案 可是同学的算法好乱

老师上课我没去 哎~ 只好来这里了
dcyu 2002-10-24
  • 打赏
  • 举报
回复
C语言的偶写过一个.pascal语言就没有了.
BaiYunfeng 2002-10-24
  • 打赏
  • 举报
回复
这题太基础了,很多书上都有的。
xdspower 2002-10-24
  • 打赏
  • 举报
回复
要用堆栈的方式处理,标志已经搜索的方向。

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧