迷宫求解问题分析(C语言).ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《ASP.NET 3.5网站开发从入门到精通》 第21章 迷宫求解 第21章 迷宫求解 第21章 迷宫求解 第21章 迷宫求解 迷宫求解 C语言的功能是强大的,可以实现很多有意义的问题的求解。比如算法领域的经典问题——迷宫求解。在一个M×N的迷宫中,给定一个入口,一个出口,如何从入口走到出口?本章就实现了这一算法。 21.1 问题描述 以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。对任意设定的迷宫,求出一条从入口到出口的通路并输出所经过的坐标点,或得出没有通路的结论。 21.2 问题分析及实现 21.2.1 问题分析 21.2.2 问题实现 21.2.3 程序运行 21.2 问题分析及实现 由问题描述可知,我们要实现的是打印从坐标A,走到坐标B,要绕过路障走一条路径出来。简单举例:从左向右走动,中间有障碍物,此时,需要向上再向右,或向下再向右,只有绕过左与右之间的障碍物,才可以顺利从左走至右,以下将仔细地分析问题并实现算法。 21.2.1 问题分析 我们的将要开发的程序,就是设置一个迷宫(m×n),并设置入口点,出口点,从出口点走向入口点,将途经的坐标记录到“栈”底,在找到路径时,将弹出栈顶元素,此时,就是所有途经的坐标点。 21.2.2 问题实现 本小节就来通过编程求解迷宫问题,实现的代码如下。 1. 采用结构体保存过程数据 通过定义两个结构体类型,分别记录栈中的走过的坐标及走过的方向,采用结构体实现栈的存储。那么,根据这个思路,代码如下(代码21-1.txt)。 21.2.2 问题实现 2. 输出结果 将结果输出至屏幕,以循环打印的方式,调用标准输入输出函数printf,将结果回显。代码如下(代码21-2.txt)。 21.2.2 问题实现 01 /*输出路径*/ 02 void OutputPath(PSeqStack st) 03 { 04 DataType element; 05 printf(\n\n出迷宫的路径是:\n); 06 while(!isEmptyStack_seq(st)) 07 { 08 element = Top_seq(st); 09 Pop_seq(st); 10 printf(\n路过的节点坐标是: 第%d行 第%d列, element.x, element.y); /* 打印路径上的每一点*/ 11 } 12 } 21.2.2 问题实现 3. 求解经过的坐标点及方向 从入口点开始,依次试探四个方向,只要某个方向没有障碍,则继续这个方向,并将这个方向不是障碍物的点做为下一个当前点,循环直到到达入口点。代码如下(代码21-3.txt) 21.2.3 程序运行 单击【调试】工具栏中的按钮,即可输出以下运行结果。 21.3 开发过程常见问题及解决 开发过程常见问题及解决办法如下,仅供参考。 ⑴ 在程序中,如何表示一个坐标点呢?方法很简单:只需要用一对变量即可保存。即:一个变量保存横坐标,另外一个变量保存纵坐标。 ⑵ 此程序的另一难点就是,方向如何表示?我们知道,水平方向有两个(左右),垂直方向也有两个(上下),所以方向就用8个变量可以表示出来。 * * 问题描述 问题分析及实现 开发过程常见问题及解决 问题描述 问题分析及实现 开发过程常见问题及解决 问题描述 问题分析及实现 开发过程常见问题及解决 问题描述 问题分析及实现 开发过程常见问题及解决

文档评论(0)

开心就好 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档