poj3984迷宫问题
一个5 × 5的二维数组,表示一个迷宫。其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
很简单的一道题,迷宫问题,一般都选择两种优先搜索方法去解,最短路线问题应该要用BFS,而不是DFS. 这道题目还需要记录路线,所以还加有存储父节点的一个空间。
贴代码如下(发现我只要是这两种方法,代码写的都不短啊):
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
typedef class{
public:
int x,y;
int fx,fy;
}vertex; int maze[][];
int trace[][]={};
vertex record[][];
void BFS()
{
vertex start,end,v,n;
start.x=;start.y=;
end.x=;end.y=;
trace[][]=;
record[][]=start;
queue<vertex> dfq;
vector<vertex> path;
dfq.push(start);
while(dfq.size()!=)
{
v=dfq.front();
dfq.pop();
if(v.x->=&&maze[v.x-][v.y]!=&&trace[v.x-][v.y]==)
{
trace[v.x-][v.y]=;
n.x=v.x-;n.y=v.y;n.fx=v.x;n.fy=v.y;
dfq.push(n);
record[n.x][n.y]=n;
}
if(v.x+<=&&maze[v.x+][v.y]!=&&trace[v.x+][v.y]==)
{
trace[v.x+][v.y]=;
n.x=v.x+;n.y=v.y;n.fx=v.x;n.fy=v.y;
dfq.push(n);
record[n.x][n.y]=n;
}
if(v.y->=&&maze[v.x][v.y-]!=&&trace[v.x][v.y-]==)
{
trace[v.x][v.y-]=;
n.x=v.x;n.y=v.y-;n.fx=v.x;n.fy=v.y;
dfq.push(n);
record[n.x][n.y]=n;
}
if(v.y+<=&&maze[v.x][v.y+]!=&&trace[v.x][v.y+]==)
{
trace[v.x][v.y+]=;
n.x=v.x;n.y=v.y+;n.fx=v.x;n.fy=v.y;
dfq.push(n);
record[n.x][n.y]=n;
}
}
int flag=,x=,y=;
while(flag)
{
vertex w=record[x][y];
path.push_back(w);
if(x==&&y==) flag=;
else{
x=w.fx;y=w.fy;
}
}
for(int i=path.size()-;i>=;i--)
{
cout<<"("<<path[i].x<<", "<<path[i].y<<")"<<endl;
}
} int main()
{
for(int i=;i<;i++)
for(int j=;j<;j++)
{
cin>>maze[i][j];
}
BFS();
return ;
}
poj3984迷宫问题的更多相关文章
- poj3984迷宫问题 广搜+最短路径+模拟队列
转自:http://blog.csdn.net/no_retreats/article/details/8146585 定义一个二维数组: int maze[5][5] = { 0, 1, 0, ...
- [poj3984]迷宫问题_bfs
迷宫问题 题目大意:给你一个5*5的矩阵,求左上角到左下角的最短路径. 注释:0或1的矩阵,1表示不能走,0表示能走,保证有唯一最短路径. 想法:bfs爆搜练习题.通过其实点,定义方向数组,然后进行b ...
- poj3984迷宫问题(DFS广搜)
迷宫问题 Time Limit: 1000MSMemory Limit: 65536K Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, ...
- Poj3984 迷宫问题 (BFS + 路径还原)
Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, ...
- POJ-3984.迷宫问题(BFS + 路径输出)
昨天中午做的这道题,结果蛙了一整天,就因为一行代码困住了,今天算是见识到自己有多菜了.流泪.jpg 本题大意:给一个5 * 5的迷宫,1表示墙壁,0表示通路,从左上角走到右下角并输出路径. 本题思路: ...
- poj3984迷宫问题(dfs+stack)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35426 Accepted: 20088 Descriptio ...
- POJ3984 迷宫问题 —— BFS
题目链接:http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- POJ3984——迷宫问题
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 31616 Accepted: 18100 Descriptio ...
- POJ-3984 迷宫问题(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, ...
随机推荐
- 经典算法题每日演练——第十四题 Prim算法
原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...
- sql server 辅助工具
sql Prompt 智能感知, 也是需要注册机. 效果如图: 这里最好改下:
- C#中实现WebBrowser控件的HTML源代码读写
原文:C#中实现WebBrowser控件的HTML源代码读写 C#中实现WebBrowser控件的HTML源代码读写http://www.blogcn.com/user8/flier_lu/index ...
- hdu 4893 Wow! Such Sequence!
http://acm.hdu.edu.cn/showproblem.php?pid=4893 三种操作: 1 k d - "add" 2 l r - "query sum ...
- IOS中 类扩展 xib
一.类扩展(class extension,匿名分类) .格式 @interface 类名 () { // 成员变量... } // 方法声明... @end .作用 > 写在.m文件中 > ...
- expected number,sequence,or string.map evaluated instead of freemarker.template.smplehash
expected number,sequence,or string.map evaluated instead of freemarker.template.smplehash 使用freemark ...
- MVC5 + EF6 + Bootstrap3-10
MVC5 + EF6 + Bootstrap3 (10) 数据查询页面 上一节:MVC5 + EF6 + Bootstrap3 (9) HtmlHelper用法大全(下) 源码下载:点我下载 目录 前 ...
- SQL点滴16—SQL分页语句总结
原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...
- CSS学习笔记:Media Queries
CSS3提供了Media Queries(媒体查询)的概念,可以利用它查询以下数据: 1.浏览器窗口的宽和高: 2.设备的宽和高: 3.设备的手持方向,横向/竖向: 4.分辨率. @media规则的语 ...
- MySQL之 ALTER vs CHANGE vs MODIFY COLUMN
1.ALTER COLUMN 用于设置或者移除某一列的默认(缺省)值, 1.1用法 ALTER TABLE MyTable ALTER COLUMN foo SET DEFAULT 'bar'; AL ...