POJ.3894 迷宫问题 (BFS+记录路径)
来源:互联网 发布:斗拱尺寸公式算法 编辑:程序博客网 时间:2024/05/16 08:20
POJ.3894 迷宫问题 (BFS+记录路径)
题意分析
定义一个二维数组:
int maze[5][5] = {
0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,
};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
简单的BFS,路径记录开一个二维数组就好。
代码总览
#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <vector>#define nmax 6using namespace std;int mp[nmax][nmax];typedef struct{ int x; int y; bool isvis;}mes;typedef struct{ int x; int y;}point;mes visit[nmax][nmax];int spx[5] = {0,1,0,-1};int spy[5] = {1,0,-1,0};bool check(point temp){ if(temp.x <0 || temp.x >=5 ||temp.y < 0 || temp.y >=5 || visit[temp.x][temp.y].isvis|| mp[temp.x][temp.y] == 1) return false; else return true;}void bfs(){ memset(visit,0,sizeof(visit)); queue<point> q; while(!q.empty()) q.pop(); point temp = {0,0},head; visit[temp.x][temp.y].isvis = true; q.push(temp); while(!q.empty()){ head = q.front(); q.pop(); if(head.x == 4 && head.y == 4){ return; } for(int i = 0;i<4;++i){ temp.x = head.x + spx[i]; temp.y = head.y + spy[i]; if(check(temp)){ visit[temp.x][temp.y].isvis = true; visit[temp.x][temp.y].x = head.x; visit[temp.x][temp.y].y = head.y; q.push(temp); } } }}void output(point temp){ point h; vector<point> v; v.clear(); while(1){ v.push_back(temp); if(temp.x == 0 && temp.y == 0) break; h.x = visit[temp.x][temp.y].x; h.y = visit[temp.x][temp.y].y; temp = h; } for(int i = v.size()-1;i>=0;--i){ printf("(%d, %d)\n",v[i].x,v[i].y); }}int main(){ for(int i = 0;i<5;++i){ for(int j = 0;j<5;++j){ scanf("%d",&mp[i][j]); } } bfs(); output({4,4}); return 0;}
阅读全文
0 0
- POJ.3894 迷宫问题 (BFS+记录路径)
- POJ 3984:迷宫问题(BFS+路径记录)
- POJ 3984 迷宫问题 BFS 记录路径
- POJ 3984--迷宫问题【BFS && 记录路径】
- poj 3984 迷宫问题 【bfs + 路径记录】
- POJ 3984 迷宫问题 BFS+记录路径
- POJ 3984 迷宫问题 【BFS+路径记录】
- poj 3984 迷宫问题 BFS+路径记录
- poj 迷宫问题(路径记录)(DFS,BFS)
- poj--3984--迷宫问题(bfs+路径记录)
- poj 3984 迷宫问题(bfs, 记录路径)
- POJ 3984 迷宫问题(BFS+路径记录)
- poj 3984 迷宫问题 【BFS + 优先队列 + stack路径记录】
- POJ 3984 迷宫问题 (路径记录)
- POJ3984 迷宫问题 (BFS与路径记录)
- poj3984迷宫问题【bfs+记录路径】
- POJ3984 迷宫问题 BFS记录路径
- POJ3984 迷宫问题(BFS+记录路径)
- maven中把依赖的JAR包一起打包
- 自己用到的orcle数据库知识1
- POJ 1321 棋盘问题
- 【字符串】回文串(codeup 5901)
- LightOJ1234 Harmonic Number
- POJ.3894 迷宫问题 (BFS+记录路径)
- Redis4.0.1的安装及哨兵模式的配置
- csdn上看到的一篇关于vue-cli的webpack模板项目配置文件分析
- 指定脚本解释器
- Maven下载项目依赖jar包和使用方法
- 剑指offer 之 输出链表的倒数第K个结点
- 打桩?——怎么用?
- 深度学习:Demo1-MNIST
- Tomcat目录结构含义