欢迎来到天天文库
浏览记录
ID:30218178
大小:18.85 KB
页数:13页
时间:2018-12-28
《算法课程设计迷宫c实现七》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、算法课程设计迷宫C实现七/**********欢迎进入我的迷宫*********/#include<stdio.h>#include<stdlib.h>#include<grahics.h>//包含画图函数头文件#include<time.h>//本题用于后面的随机函数的发生#include<conio.h>//本题用于getch()#include<rocess.h>//本题用于清屏#defineN8#defineMAX_STACK_SIZEN*N//最大栈容量#defineTRUE1#de
2、fineFALSE0#defineLEN(300/N)/*结构体记录每一步的横坐标纵坐标和方向*/tyedefstruct{shortintrow;shortintcol;shortintdir;}element;elementstack[MAX_STACK_SIZE];/*****结构体记录水平和垂直的偏移量*****/tyedefstruct{shortintvert;//水平偏移量shortinthoriz;//垂直偏移量}offsets;offsetsmove[8];//8个方向的moveintmaze[N+2][N+2];//二维数组记录迷宫intmar
3、k[N+2][N+2];//记录迷宫中每点是否可到达intEXIT_ROW=N,EXIT_COL=N;//标记最后出口/*********在栈中加入一个素*********/voidadd(int*to,elementitem){if(*to>=MAX_STACK_SIZE-1)//判断栈是否已满{rintf("Thestackisfull!");//栈满时输出return;}//endifstack[++*to]=item;//当前信息压进栈中}/********返回栈中顶部的素********/elementdelet(int*t
4、o){if(*to==-1)//判断栈是否为空{rintf("Thestackisemty!");exit(1);}//endifreturnstack[(*to)--];//不为空时输出栈顶素}/******输出走出迷宫的径******/voidath(void){inti,j,k,row,col,next_row,next_col,dir,found=FALSE;IMAGE;///*--------------------------------------------------------------*
5、i--->用来循环计
6、数
7、
8、row,col--->当前位置的坐标
9、
10、next_row--->移动后的位置的横坐标
11、
12、next_col--->移动后的位置的纵坐标
13、
14、dir--->移动的方向
15、
16、found--->标志径是否发现
17、*--------------------------------------------------------------*/elementosition;intto=0;mark[1][1]=1;//由于标志maze[1][1]已经被走过了stack[0].row=1;stack[0].col=1;stack[0].dir=1
18、;//第一步的状态move[0].vert=-1;move[0].horiz=0;move[1].vert=-1;move[1].horiz=1;move[2].vert=0;move[2].horiz=1;move[3].vert=1;move[3].horiz=1;move[4].vert=1;move[4].horiz=0;move[5].vert=1;move[5].horiz=-1;move[6].vert=0;move[6].horiz=-1;move[7].vert=-1;move[7].horiz=-1;//指定了八个方向initgrah(640,
19、480);//VGAHI将屏幕调整为VGA模式下的16色分辨率为640*480/*---------------------------------------------------------------*
20、主要算法描述:
21、
22、当stack不为空,移动到stack顶部的位置
23、
24、试着向各个方向移动如果可以移动就移动到
25、
26、下一个位置并把它标志成1。
27、
28、然后保存状态并加入到stack中
29、
30、如果径被破坏或者不存在就将其删除
31、
32、并返回到上一点继续遍历其他方向的点
33、
34、直到一条径被发现。
35、*-----------------------------------------
36、-----
此文档下载收益归作者所有