算法课程设计迷宫c实现七

算法课程设计迷宫c实现七

ID:30218178

大小:18.85 KB

页数:13页

时间:2018-12-28

算法课程设计迷宫c实现七_第1页
算法课程设计迷宫c实现七_第2页
算法课程设计迷宫c实现七_第3页
算法课程设计迷宫c实现七_第4页
算法课程设计迷宫c实现七_第5页
资源描述:

《算法课程设计迷宫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、-----

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。