• 大小: 4.11KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-03-28
  • 语言: 其他
  • 标签: 其他  

资源简介


问题描述: 以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴ 实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵ 编写递归形式的算法,求得迷宫中所有可能的通路; ⑶ 以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口 实现提示: 计算机解迷宫通常用的是

资源截图

代码片段和文件信息

// maze.cpp
// 实现了堆栈的一些基本操作
// 也实现了迷宫的路径寻找和打出
#include 
#include “maze.h“

extern int maze[MAXLEN][MAXLEN];
extern item move[4];
// 动态生成一个静态堆栈
SeqStack *InitSeqStack()
{
SeqStack *s;
s=new SeqStack;
s->top=-1;
return s;
}
// 数据入栈
int Push(SeqStack *sdataType x)
{
if(s->top==MAXLEN-1)
return 0;
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}
// 判断堆栈是否没有数据
int StackEmpty(SeqStack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
// 弹出数据出栈
int Pop(SeqStack *sdataType *x)
{
if(StackEmpty(s))
return 0;
else
{
*x=s->data[s->top];
s->top--;
return 1;
}
}
// 打印出迷宫矩阵
void printS1(int xint y)
{
int ij;
for(i=0;i {
for(j=0;j printf(“%3d“maze[i][j]);
printf(“\n“);
}
}
// 堆栈中存储的迷宫数据
void printS2(SeqStack *s)
{
printf(“非递归算法的迷宫路径为:\n“);
for(int i=0;itop;i++)
{
printf(“(%d%d%d)->“s->data[i].xs->data[i].ys->data[i].d);
}
printf(“(%d%d%d)->“s->da

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        180  2011-06-19 01:19  readme.txt

     文件       1338  2011-06-20 20:39  run.cpp

     文件       3597  2011-06-21 23:37  (最终版) 迷宫综合完成.cpp

     文件       3243  2011-06-20 20:41  maze.cpp

     文件        980  2011-06-19 01:16  maze.h

----------- ---------  ---------- -----  ----

                 9338                    5


评论

共有 条评论