数据结构-顺序队列解决最短迷宫路径问题
来源:互联网 发布:得力33113考勤软件 编辑:程序博客网 时间:2024/05/21 09:04
#include<stdio.h>#include<stdlib.h>#define MaxSize 100int M=8,N=8;int mg[10][10]={{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; //i,j分别为横纵坐标 int pre; //路径的方向}Box;typedef struct{ Box data[MaxSize]; int front,rear;}QuType;void print(QuType qu,int front);int mgpath();int mgpath(int xi,int yi,int xe,int 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; qu.data[qu.rear].pre=-1; mg[xi][yi]=-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); return 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; } } } return 1;}void print(QuType qu,int front){ int k=front,j,ns=0; printf("\n"); do { j=k; k=qu.data[k].pre; qu.data[j].pre=-1; }while(k!=0); //反向搜索找出最短路径 printf("迷宫路径图如下:\n"); k=0; while(k<64) { 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"); } k++; } printf("\n");}int main(){ if(!mgpath(1,1,M,N)) printf("该迷宫问题没有解!"); return 0;}
阅读全文
0 0
- 数据结构-顺序队列解决最短迷宫路径问题
- [数据结构]求解迷宫最短路径问题
- 数据结构_队列_迷宫的最短路径
- poj3984迷宫问题 广搜+最短路径+模拟队列
- 队列应用2:求解迷宫问题,最短路径
- 迷宫最短路径问题
- 迷宫问题,最短路径
- 迷宫最短路径算法(使用队列)
- erl_stack_queue-队列求迷宫最短路径
- 迷宫问题,求最短路径长度、最短路径条数、所有最短路径,DFS+BFS+栈+队列
- 数据结构--最短路径问题
- BFS 迷宫的最短路径问题
- 迷宫最短路径问题解析
- 迷宫问题之最短路径bfs
- 迷宫问题的最短路径
- 迷宫最短路径问题-BFS
- 迷宫最短路径问题(BFS)
- 迷宫最短路径
- div 居中问题
- 算法+优化方案(一)
- Spring MVC 访问静态资源的方法
- Mybatis学习第二天
- python3.5+selenium3.4自动化测试3_下拉框循环选择
- 数据结构-顺序队列解决最短迷宫路径问题
- KMP模板
- 用户权限管理系统的过滤器的优化
- TyvjP1045 最大的算式
- BZOJ3864 Hero meet devil
- 转载的Android studio 结构
- Kafka更新offset,scala反射调用进行测试
- 【算法题】买苹果
- 104-信号引起的竞争错误