资源描述:
《第五组 迷宫求解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五组:迷宫求解第五组成员题目:迷宫求解程序:#include#include#include#definemaxsize36typedefstructlnode{structlnode*next;structlnode*pre;intx;inty;intstepsum;//表示当前脚步为第几步。intdi;//用di代表已尝试的脚步方向。1.2.3.4分别代表未尝试:↑、→、↓、←。}lnode,*linklist;//全局变量开始link
2、listL,L2,p,q,g;//三个指针pqg满足不同函数临时指针需要lnode*nowstep,*laststep;intmaze[maxsize+2][maxsize+2];//存储迷宫的数组,+2是为了加围墙。intm,n;//迷宫行、列数变量intexitx,exity,entrancex,entrancey;//出入口的坐标:xy分别代表行列.intfinish=0;//走迷宫的最终全局结果。1有路,-1无路,2出入口重合。intexistL=0;//手动创建迷宫,选择r重新创建迷宫
3、,formatmaze()将格式化各变量。检测L链表是否存在防止程序崩溃。intmindistance=0;//存放求出的最短路径的步数。intautocreat()//默认创建的迷宫函数第五组:迷宫求解{inti,j,f;intmaze1[10][10]={{0,0,0,0,0,0,0,0,0,0},//0:代表砖;1:代表通路{0,1,1,0,1,1,1,0,1,0},{0,1,1,0,1,1,1,0,1,0},{0,1,1,1,1,0,0,1,1,0},{0,1,0,0,0,1,1,1,1
4、,0},{0,1,1,1,0,1,1,1,1,0},{0,1,0,1,1,1,0,1,1,0},{0,1,0,0,0,1,0,0,1,0},{0,0,1,1,1,1,1,1,1,0},{0,0,0,0,0,0,0,0,0,0},};//将maze1存储的迷宫复制到maze数组中。for(i=0;i<10;i++)for(j=0;j<110;j++)maze[i][j]=maze1[i][j];printf("程序将对此迷宫进行求解,入口(1,1)出口(8,8)");m=n=8;entra
5、ncex=entrancey=1;exitx=exity=8;maze[entrancex][entrancey]=-1;maze[exitx][exity]=-2;outlin();maze[entrancex][entrancey]=1;maze[exitx][exity]=1;printf("(如需自行创建迷宫使用<手动迷宫>项)");printf("输入1求解此迷宫,输入0返回程序菜单:");scanf("%d",&f);system("cls");while(1){if(f==
6、0)return0;elseif(f==1)return1;else{printf("输入错误,请重新输入1(求解迷宫)或0(返回程序菜单)第五组:迷宫求解");scanf("%d",&f);system("cls");}}}intoutlin()//输出迷宫函数{inti,j;if(finish==-1){printf("没找到路!你的迷宫有问题...");return1;}elseif(finish==2){printf("入口和出口重合了!");return
7、1;}elseif(finish==1)printf("已成功查找出最短路径,输出如下:");printf("");//开始输出图形。for(j=0;j8、rintf("■");break;case1:printf("");break;case2:printf("│");break;case3:printf("─");break;第五组:迷宫求解case4:printf("┌");break;case5:printf("┐");break;case6:printf("└");break;case7:printf("┘");break;}}printf("");}if(finish==1)//输出最优路径{q=L2->next;printf("此