POJ-3984-迷宫问题-BFS(广搜)-手写队列
来源:互联网 发布:淘宝上1元秒杀是真的吗 编辑:程序博客网 时间:2024/04/30 08:27
题目链接:http://poj.org/problem?id=3984
这个本来是个模板题,但是老师要去不能用STL里的queue,得自己手写解决,ORZ....看别人的博客学习,新技能get。。。
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<queue>#include<map>#include<stack>#include<set>#include<vector>#include<algorithm>#define LL long longusing namespace std;int Map[10][10];int last=0,total=1; // total为队列总元素,last为先驱标记;int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}};struct node{ int x,y,pre;}q[30];bool Isok(int x,int y) // 判断时候在迷宫内部,决定时候继续往下搜;{ if(x<0||y<0||x>4||y>4||Map[x][y]) return false; else return 1;}void print(int i) // 自定义输出函数,调用递归,利用递归原理可以很轻松的从后往前输出;{ if(q[i].pre!=-1){ // 先驱为-1位起点; print(q[i].pre); printf("(%d, %d)\n",q[i].x,q[i].y); }}void bfs(int x,int y){ q[last].x=x; q[last].y=y; q[last].pre=-1; // 起点,先驱标记为-1; while(last<total){ // 判断队列是否为空; for(int i=0;i<4;i++){ // 四个方向搜索; int a=q[last].x+dir[i][0]; int b=q[last].y+dir[i][1]; if(Isok(a,b)){ //cout<<a<<' '<<b<<endl; Map[a][b]=1; q[total].x=a; q[total].y=b; q[total].pre=last; // 记录先驱; total++; // 入队; } if(a==4&&b==4){ print(last); } } last++; // 出队; }}int main(){ for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ scanf("%d",&Map[i][j]); } } printf("(0, 0)\n"); bfs(0,0); printf("(4, 4)\n"); return 0;}
0 1
- POJ-3984-迷宫问题-BFS(广搜)-手写队列
- POJ 3984 迷宫问题 手写队列+BFS路径输出
- 广搜BFS 迷宫问题
- 迷宫问题(广搜 bfs)
- POJ 3984----迷宫问题(广搜)
- poj 3984 迷宫问题(广搜)
- POJ 3984 迷宫问题 广搜迷宫解法
- poj 3984 迷宫问题 【BFS + 优先队列 + stack路径记录】
- POJ 3984 迷宫问题 广搜记录路径
- POJ 3984-迷宫问题 BFS
- poj 3984 迷宫问题(bfs)
- POJ 3984 迷宫问题 BFS
- poj 3984 迷宫问题 bfs
- POJ 3984 || 迷宫问题 (bfs
- POJ 3984 迷宫问题 BFS
- POJ 3984 迷宫问题(bfs)
- BFS-POJ-3984-迷宫问题
- 迷宫问题 POJ 3984 【BFS】
- Annotation(注解)
- Spark MLlib 算法
- 在VS2010中运行带命令行参数程序
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- Spring(三)Spring三种实例化JavaBean的方式
- POJ-3984-迷宫问题-BFS(广搜)-手写队列
- /var/spool/clientmqueue文件多导致磁盘满
- linux fork 函数
- Android设计中的.9.png
- Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
- 关于js的总结
- C++中WINAPI函数参数中的IN和OUT
- 使用Python递归对文件进行相关处理
- Java4Android-面向对象的应用1