迷宫的表示.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
迷宫的表示

. 迷宫的表示。 迷宫用结构体MATRIX来表示 包括迷宫矩阵 迷宫的宽,迷宫的高, 迷宫入口的坐标,迷宫出口的坐标。 结构体定义如下: typedef struct _step { int x; //行坐标 int y; //列坐标 }STEP; typedef struct _matrix { int data[MAX_WIDTH+2][MAX_WIDTH+2]; //迷宫数据,0:表示有路,1:表示墙 int width; //矩阵(迷宫)的宽,包括最左和最有2堵墙 int height; //矩阵(迷宫)的宽,包括顶部和底部2堵墙 STEP entrance; //迷宫入口 STEP exit; //迷宫出口 }MATRIX; 迷宫矩阵的每一个元素可以是0或1,0表示可走,1表示是墙,走不通。 为了便于检查是否越界,即坐标超过迷宫的范围。在迷宫的4个边增加了全1数据,表示4堵墙,这样,在任何时候,都不会越界。下面的数据表示1个5×5的迷宫,增加了4堵墙后,实际宽度和高度变为7,迷宫变成1个7×7的矩阵 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2.算法 ? 走迷宫的路径的每一步可用二元组(x,y)来表示。已经走过的路径放入数组path。 首先,将入口的坐标放入数组,此时path数组的元素个数为1. 接下来使用下面的规则,试图找到一条出路 1. 从当前位置(即数组的最后一个元素),从右,下,左,上四个方向搜索,看能否走通。 ? 如果可找到一条通路,则 ? ? ? 将新的位置的坐标放入path数组,数组长度加1.? ? ? ? 如果新的位置的坐标等于出口的坐标,搜索结束。 ?? ? 如果从各个方向都走不通,则 ? ? ?将迷宫当前位置的元素置为1,这样,当前点就变成墙,下次就不会走到这个位置了。并将数组的最有一个元素丢弃,数组长度减1 ? ? ?如果数组的长度为0,没有任何路径可以走通,搜索结束。 全部的代码见下: [cpp] view plaincopyprint? #include?stdafx.h?? #include?stdlib.h?? #include?stdio.h?? #include?memory.h?? ?? #define?MAX_WIDTH????30?? #define?MAX_HEIGHT???30?? ?? typedef?struct?_step?? {?? ????int?x;??????????//行坐标?? ????int?y;??????????//列坐标?? }STEP;?? ?? typedef?struct?_matrix?? {?? ????int?data[MAX_WIDTH+2][MAX_WIDTH+2];?//迷宫数据,0:表示有路,1:表示墙?? ????int?width;??????????????//矩阵(迷宫)的宽,包括最左和最有2堵墙?? ????int?height;?????????????//矩阵(迷宫)的宽,包括顶部和底部2堵墙?? ????STEP?entrance;??????????????//迷宫入口?? ????STEP?exit;??????????????//迷宫出口?? }MATRIX;?? ?? MATRIX?g_matrix=????????????????//初始化为一个迷宫,程序也能从文件中读入迷宫数据?? {?? ????{?? ????????{1,?1,?1,?1,?1,?1,?1},?? ????????{1,?0,?0,?0,?0,?0,?1},?? ????????{1,?1,?0,?1,?0,?1,?1},?? ????????{1,?0,?0,?1,?1,?1,?1},?? ????????{1,?0,?1,?0,?0,?0,?1},?? ????????{1,?0,?0,?0,?1,?0,?1},?? ????????{1,?1,?1,?1,?1,?1,?1},?? ????},?? ????7,7,????????????????????//7行,7列,包括4堵墙?? ????{1,1},??????????????????//入口坐标?? ????{5,5}???????????????????//出口坐标?? };?? ?? ?? static?STEP??s_shift[]=?? {?? ????{1,0},??????//向右走,?x++

文档评论(0)

saa9099 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档