迷宫问题队列实现
2013-10-23 20:55
239 查看
#include <iostream> using namespace std; #define M 10 #define N 10 #define MaxSize 100 int mg[M] = { {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} }; struct { int i; int j; int pre; }Qu[MaxSize]; int front=0,rear=0; void print(int front) { while(front!=-1) { printf("a[%d][%d]\n",Qu[front].i,Qu[front].j); front=Qu[front].pre; } } void mappath(int x1,int y1,int x2,int y2) { rear++; Qu[rear].i=x1; Qu[rear].j=y1; Qu[rear].pre=-1; mg[x1][y1]=-1; int find=0; while(rear!=front) { int i,j; front++; i=Qu[front].i; j=Qu[front].j; if (i==x2&&j==y2) { find=1; print(front); } int di; for (di=0;di<3;di++) { switch(di) { case 0:i=Qu[front].i-1;j=Qu[front].j;break; case 1:i=Qu[front].i;j=Qu[front].j+1;break; case 2:i=Qu[front].i+1;j=Qu[front].j;break; case 3:i=Qu[front].i;j=Qu[front].j-1;break; } if (mg[i][j]==0) { rear++; Qu[rear].i=i;Qu[rear].j=j; Qu[rear].pre=front; mg[i][j]=-1; } } } if (!find) { printf("没路径\n"); } } int main() { mappath(1,1,8,8); }
相关文章推荐
- 队列实现迷宫问题
- 队列实现迷宫问题(精装版,可返回路径)
- 队列实现迷宫问题(垃圾版)
- 数据结构和算法设计(迷宫求解问题的栈和队列的实现)
- c++链表实现队列,深搜加宽搜,加模版类实现迷宫问题;
- 栈和队列的底层实现及迷宫问题
- 第5周实践项目5 迷宫问题(栈和队列实现)
- 迷宫问题的分析与实现
- 队列的应用——求解迷宫问题
- 栈与递归实现迷宫问题求
- 实现一个线程安全的队列,并模拟进行生产者-消费者问题
- 迷宫最短路径问题(ShortestPath)的求解——利用链式队列
- 经典算法<一>迷宫问题 1.单条路径 DFS求解 C++实现
- 位置距离[置顶] 营救公主(Java实现A*算法解决迷宫问题)
- 利用BFS、队列求解迷宫问题
- 用顺序队列实现的舞会舞伴选择问题
- 应用栈求解迷宫问题(C++实现)
- HDU 1026 迷宫战斗问题 使用了优先队列
- 多态&指针访问虚函数&不能被继承的类&快速排序&N皇后问题&插入排序&堆排序&merge归并排序&栈上生成对象&两个栈实现一个队列
- 数据结构例程——迷宫问题(用队列)