数据结构——迷宫.docVIP

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

数据结构——迷宫 完成功能的详细说明: 1.迷宫中不能使用递归算法查找路径。 2.试探方向限定为上、下、左、右四个方向。 3.迷宫要随机生成。 4.生成从迷宫入口到出口的最短和最长路径。 5.迷宫的入口和出口由键盘输入。 代码: #include iostream #include time.h #includeiomanip #includestdlib.h # define MAX 20 using namespace std; int M,N; int m[MAX][MAX]; void create() //自动生成迷宫 { cout请输入行数列数(20):; cinMN; if(M20||N20) { cout输入有误,请重新输入:; cinMN; } for(int k=0;kN;k++) { m[0][k]=1; m[M-1][k]=1; } for(int g=1;gM;g++) { m[g][0]=1; m[g][N-1]=1; } srand(time(0)); for(int i=1;iM-1;i++) for(int j=1;jN-1;j++) m[i][j]=rand()%2; } void Show() //迷宫输出 { for(int i=0;iM;i++) { for(int j=0;jN;j++) { cout m[i][j]; if((j+1)%N==0) coutendl; } } } struct { int i,j,di; }Stack[MAX],Path[MAX],Path1[MAX]; //最短路径数组 最长路径数组 void mpath( ) { int top=-1; int minlen=MAX; int maxlen=0; int i,j,di,find,k; int x,y,p,q; int count=1; cout 请输入入口和出口(int):; cinxypq; cout*****迷宫入口为:(x,y) 迷宫出口为:(p,q) *****endl; top++; Stack[top].i=x; Stack[top].j=y; Stack[top].di=-1; m[1][1]=-1; cout=========迷宫所有路径如下==========endl; //迷宫所有路径 while(top-1) { i=Stack[top].i; j=Stack[top].j; di=Stack[top].di; if(i==pj==q) { coutcount++ :; for(k=0;k=top;k++) { cout(Stack[k].i,Stack[k].j) ; } coutendl; if(top+1minlen) //最短路径计算 { for(k=0;k=top;k++) Path[k]=Stack[k]; minlen=top+1; } if(topmaxlen) //最长路径计算 { for(k=0;k=top;k++) Path1[k]=Stack[k]; maxlen=top+1; } m[Stack[top].i][Stack[top].j]=0; top--; i=Stack[top].i; j=Stack[top].j; di=Stack[top].di; } find=0; while(di4find==0) //四个方向选择 { di++; switch(di) { case 0: i=Stack[top].i-1;j=Stack[top].j;break; case 1: i=Stack[top].i;j=Stack[top].j+1;break; case 2: i=Stack[top].i+1;j=Stack[top].j;break; case 3: i

文档评论(0)

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

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

1亿VIP精品文档

相关文档