POJ 3984 迷宫问题
来源:互联网 发布:java正则表达式分组 编辑:程序博客网 时间:2024/06/06 09:23
【题意】中文题。。。
【思路】简单bfs加路径记录。
【AC代码】
#include <set>#include <map>#include <queue>#include <stack>#include <cstring>#include <vector>#include <cstdio>#include <iostream>#include <algorithm>using namespace std;struct node{ int x,y; node(){} node(int x,int y):x(x),y(y){}}ans[30][30];int dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}};int maze[5][5];int vis[5][5];stack<node>S;void bfs(){ queue<node>qu; qu.push(node(maze[0][0],maze[0][0])); vis[0][0]=1; while(!qu.empty()){ node tmp = qu.front(); qu.pop(); if(tmp.x==4&&tmp.y==4) return ; for(int i=0; i<4; i++){ int dx = tmp.x+dir[i][0]; int dy = tmp.y+dir[i][1]; if(dx>=0&&dx<5&&dy>=0&&dy<5&&maze[dx][dy]!=1&&!vis[dx][dy]){ ans[dx][dy].x = tmp.x; ans[dx][dy].y = tmp.y; qu.push(node(dx,dy)); vis[dx][dy]=1; } } }}int main(){ for(int i=0; i<5; i++) for(int j=0; j<5; j++) scanf("%d",&maze[i][j]); memset(vis,0,sizeof(vis)); memset(ans,0,sizeof(ans)); bfs(); node tmp=node(4,4); S.push(tmp); while(tmp.x||tmp.y){ int x = tmp.x; int y = tmp.y; tmp.x = ans[x][y].x; tmp.y = ans[x][y].y; S.push(tmp); } while(!S.empty()){ tmp = S.top(); S.pop(); printf("(%d, %d)\n",tmp.x,tmp.y); } return 0;}
0 0
- poj 3984 迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- Poj 3984 迷宫问题
- 迷宫问题 poj 3984
- poj 3984迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- poj 3984- 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- poj 3984:迷宫问题
- POJ-3984-迷宫问题
- POJ 3984 迷宫问题
- poj 3984迷宫问题
- POJ 3984 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- [容器]STL之list容器详解
- 递减剔除数组元素算法
- Qt下 QString转char*
- 关于angularJS uibModalInstace Unknown provider报错问题
- Qt: 使用QML来创建界面
- POJ 3984 迷宫问题
- c++运算符重载
- Ubuntu16.04中Intel Wireless-N 7260不工作不稳定的解决方案
- c++注意
- Android Studio中文件名的颜色的意义
- OpenCV 用imread函数读入灰度图变成彩色图(三通道)怎么回事?
- MySQL快速入门(一)
- 简单大数相加
- 最大连续数列和