迷宫问题算法实现_第1页
迷宫问题算法实现_第2页
迷宫问题算法实现_第3页
迷宫问题算法实现_第4页
迷宫问题算法实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、需求分析本课程旨在解决迷宫求解问题。从入口开始,我们将沿着某个方向向前探索。如果我们能度过难关,我们将继续前进。否则,沿着原路返回,继续向另一个方向探索,直到探索完所有可能的路径。为了确保你可以在任何位置折回你的脚步,显然有必要使用后进先出的结构来保存从入口到当前位置的路径。因此,在寻找迷宫路径的算法中应该应用“栈”的思想。假设“当前位置”是指“搜索过程中某一时刻图中的某一正方形位置”,在迷宫中寻找路径的算法的基本思想是:如果当前位置是“可通过的”,则应包括“当前路径”,并应继续向“下一位置”探索,即“下一位置”应切换到“当前位置”,如此重复直至到达出口;如果当前位置是“不可接近的”,它应该跟随“到来”返回到“前一个通道块”,然后继续向除“到来”之外的其他方向探索;如果通道块周围的所有四个方块都是“不可通过的”,则通道块应该从“当前路径”中删除。所谓的“下一个位置”是指当前位置周围四个方向(东、南、西、北)的相邻方格。假设“当前路径”记录在堆栈S中,“当前路径上的最后一个通道块”存储在堆栈的顶部。因此,“包含路径”的操作是“堆栈在当前位置”;“从当前路径移除前一个通道块”的操作称为“推送”。二。数据结构1.数据结构设计考虑1)建立二维阵列来表示迷宫的路径(0表示通道,1表示墙壁);2)创建一个堆栈来存储“当前路径”,即“在搜索过程中的某个时间,正方形在图形中的位置”。2.逻辑结构存储结构1)创建一个二维数组int型Int迷宫n1n2来存储0和1;2)创建一个存储阵列信息的结构(阵列的横坐标x、阵列的纵坐标y和方向c)typedef结构节点int x;int y;int c; linkstack3)创建堆栈包括(top表示堆栈顶部元素)linkstack topn1 * N2;第三,算法设计首先,创建数组的大小,这需要用户输入。特定算法:Printf(输入迷宫大小(提示:行和列不能超过50!):;scanf(“% d”,g);打印(“创建大小,输入迷宫: n”);其次,用户定义迷宫的内容和算法:void shuzu(int g,int h)int a,b;对于(a=0;a#包括# define 150/定义行范围# define 2 50/定义列范围Typedef结构节点/创建一个存储数组信息的结构int x;int y;int c; linkstackn1N2;/创建2D数组linkstack topn1 * N2;/创建一个N*N堆栈int i,j,k,m=1,ru

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论