第七周:迷宫问题
来源:互联网 发布:淘宝查排名工具 编辑:程序博客网 时间:2024/05/22 10:43
/*烟台大学计算机与控制工程学院 *all right resverd *文件名称:迷宫问题 *作者:刘亚浩 *完成日期:2015.10.30 *版本号:1.0*/ 1.其代码为;#include <stdio.h>#define MaxSize 100#define M 8#define N 8int mg[M+2][N+2]={ {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,0,0,1,1,0,0,1}, {1,0,1,1,1,0,0,0,0,1}, {1,0,0,0,1,0,0,0,0,1}, {1,0,1,0,0,0,1,0,0,1}, {1,0,1,1,1,0,1,1,0,1}, {1,1,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1}};typedef struct{ int i,j; //方块的位置 int pre; //本路径中上一方块在队列中的下标} Box; //方块类型typedef struct{ Box data[MaxSize]; int front,rear; //队头指针和队尾指针} QuType; //定义顺序队类型void print(QuType qu,int front) //从队列qu中输出路径{ int k=front,j,ns=0; printf("\n"); do //反向找到最短路径,将该路径上的方块的pre成员设置成-1 { j=k; k=qu.data[k].pre; qu.data[j].pre=-1; } while (k!=0); printf("迷宫路径如下:\n"); k=0; while (k<=front) //正向搜索到pre为-1的方块,即构成正向的路径 { if (qu.data[k].pre==-1) { ns++; printf("\t(%d,%d)",qu.data[k].i,qu.data[k].j); if (ns%5==0) printf("\n"); //每输出每5个方块后换一行 } k++; } printf("\n");}int mgpath(int xi,int yi,int xe,int ye) //搜索路径为:(xi,yi)->(xe,ye){ int i,j,find=0,di; QuType qu; //定义顺序队 qu.front=qu.rear=-1; qu.rear++; qu.data[qu.rear].i=xi; qu.data[qu.rear].j=yi; //(xi,yi)进队 qu.data[qu.rear].pre=-1; mg[xi][yi]=-1; //将其赋值-1,以避免回过来重复搜索 while (qu.front!=qu.rear && !find) //队列不为空且未找到路径时循环 { qu.front++; //出队,由于不是环形队列,该出队元素仍在队列中 i=qu.data[qu.front].i; j=qu.data[qu.front].j; if (i==xe && j==ye) //找到了出口,输出路径 { find=1; print(qu,qu.front); //调用print函数输出路径 return(1); //找到一条路径时返回1 } for (di=0; di<4; di++) //循环扫描每个方位,把每个可走的方块插入队列中 { switch(di) { case 0: i=qu.data[qu.front].i-1; j=qu.data[qu.front].j; break; case 1: i=qu.data[qu.front].i; j=qu.data[qu.front].j+1; break; case 2: i=qu.data[qu.front].i+1; j=qu.data[qu.front].j; break; case 3: i=qu.data[qu.front].i, j=qu.data[qu.front].j-1; break; } if (mg[i][j]==0) { qu.rear++; //将该相邻方块插入到队列中 qu.data[qu.rear].i=i; qu.data[qu.rear].j=j; qu.data[qu.rear].pre=qu.front; //指向路径中上一个方块的下标 mg[i][j]=-1; //将其赋值-1,以避免回过来重复搜索 } } } return(0); //未找到一条路径时返回1}int main(){ mgpath(1,1,M,N); return 0;}2.运行结果为;<img src="http://img.blog.csdn.net/20151030083736139?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="1441" height="704" alt="" />
0 0
- 第七周:迷宫问题
- 第七周-自制迷宫
- 第七周-自制迷宫升级版
- 第七周 博客问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题...
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 第九周 项目1-猴子选大王(数组)
- ARM寻址方式
- 2015-10-30【项目4-广义表算法库及应用】
- 方法综述
- 1011 A+B和C
- 第七周:迷宫问题
- 第一个结果
- 第8周SHH数据结构—【项目1-建立顺序串的算法库】
- 第九周项目1 - 猴子选大王(数组版)
- 如何修改mysql 5.6.24解压缩版(免安装版或zip版)字符编码
- 动态改变启动图 LaunchImage
- 第九周项目3-稀疏矩阵的三元组表示的实现与应用
- ARM裸机开发环境搭建
- 8.4 Power Set