/*

题目:

求最少时间从(0,0)走到(4,4)的路径

分析:

纯粹BFS题目,不过需要打印路径,可以用数组记录当前的坐标的上一个坐标,

因为BFS构造出一棵BFS最优生成树,每一个节点的父母节点都是唯一的,具体

参考算法导论。。。

*/

#include <iostream>

#include <cstring>

#include <cstdio>

#include <queue>

using namespace std;

#define X 6

int map[X][X],pre[X][X];

bool visit[X][X];

struct node

{

int x,y;

};

void print(int x,int y)     //打印路径

{

if(x||y)    //一直递归到起始的(0,0)为止,然后不停输出到(4,4)走过的路

print(pre[x][y]/10,pre[x][y]%10);

if(pre[x][y]!=-1&&pre[x][y]!=-1)       //不输出(0,0)以前的坐标。。。

printf("(%d, %d)\n",pre[x][y]/10,pre[x][y]%10);

}

void bfs()

{

queue<node> q;

node temp,cur;

temp.x = 0;

temp.y = 0;

q.push(temp);

int x,y;

visit[0][0] = true;

while(!q.empty())   //BFS核心

{

cur = q.front();

q.pop();

x = cur.x;

y = cur.y;

if(x==4&&y==4)

print(4,4);

if(x&&!visit[x-1][y]&&!map[x-1][y])//往上走

{

visit[x-1][y] = true;

temp.x = x-1;

temp.y = y;

pre[x-1][y] = x*10+y;

q.push(temp);

}

if(y&&!map[x][y-1]&&!visit[x][y-1]) //往左走

{

visit[x][y-1] = true;

temp.x = x;

temp.y = y-1;

pre[x][y-1] = x*10+y;

q.push(temp);

}

if(y<4&&!map[x][y+1]&&!visit[x][y+1])//往右走

{

visit[x][y+1] = true;

temp.x = x;

temp.y = y+1;

pre[x][y+1] = x*10+y;

q.push(temp);

}

if(x<4&&!map[x+1][y]&&!visit[x+1][y])//往下走

{

visit[x+1][y] = true;

temp.x = x+1;

temp.y = y;

pre[x+1][y] = x*10+y;

q.push(temp);

}

}

}

int main()

{

freopen("sum.in","r",stdin);

freopen("sum.out","w",stdout);

while(cin>>map[0][0])

{

memset(pre,-1,sizeof(pre));

memset(visit,false,sizeof(visit));

for(int i=0;i<5;i++)

for(int j=0;j<5;j++)

if(i||j)

scanf("%d",&map[i][j]);

bfs();

printf("(%d, %d)\n",4,4);//最后打印最后的坐标

}

return 0;

}

转载于:https://www.cnblogs.com/yejinru/archive/2012/03/01/2376292.html

poj 3984 迷宫问题 BFS相关推荐

  1. POJ 3984 迷宫问题 BFS DFS两种解法

    题目地址:点这里 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18495 Accepted: 10947 Descr ...

  2. POJ 3984 迷宫问题 BFS求最短路线+路径记录

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 31050   Accepted: 17826 Descriptio ...

  3. 【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】

    POJ3126Prime Path 给定两个四位素数a  b,要求把a变换到b 变换的过程要 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数  与  前一步得到的素数  只能有一个位 ...

  4. POJ 3984 迷宫问题 (Dijkstra)

    迷宫问题 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, ...

  5. (简单) POJ 3984 迷宫问题,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, ...

  6. POJ 3984 迷宫问题

    定义一个二维数组: 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, ...

  7. K - 迷宫问题 POJ - 3984

    K - 迷宫问题 POJ - 3984 5*5迷宫,输出从(0,0)走到(4,4)的最短路径 类似康托,自己弄个一一对应的公式即可 #include<iostream> #include& ...

  8. POJ 3414 Pots【BFS】+ Python

    原题链接: 3414 -- Pots 参考资料:POJ 3414 - Pots | 眈眈探求 POJ 3414 Pots[BFS][图搜] - it610.com 一 特别注意: 1. 每一种操作对应 ...

  9. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

最新文章

  1. 26条面试经典问答(真实工作经验)
  2. 您如何在PHP中解析和处理HTML / XML?
  3. FTP服务器serv-u
  4. 复数特征值求特征向量_深刻地认识特征值
  5. 【论文学习】Bringing Old Photos Back to Life
  6. 非root用户安装protobuf的python依赖到指定目录
  7. 《深度学习工程师》听课笔记,编程作业和课后练习
  8. 《WF编程》系列之29 - 本地通信事件:HandleExternalEventActivity 活动生成器
  9. 计算机里文本格式,设置计算机以更改文本文档格式,如何更改文本文档格式-...
  10. 学了计算机很迷茫怎么办?计算机大三学生怎么找实习工作?
  11. 基于SPSS的医疗医保费用数据分析预测(C#)
  12. 【信息学奥赛】1005:地球人口承载力估计(C++)
  13. 光流传感器 定位精度_光流定位原理是什么??
  14. 计算机清内存,电脑内存清理命令是什么
  15. 论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》
  16. python获取鼠标的当前坐标
  17. 计算机基础08在线测试,《计算机应用基础》在线测试..doc
  18. Mac安装ACC提示“无法检查更新 请检查您的互联网连接,然后再试一次“解决方法
  19. Centos7之pacemaker高可用安装配置
  20. 钜泉光电2018年 IC校招笔试题目

热门文章

  1. python软件代码示例-python 示例代码1
  2. python程序从哪里开始执行-python如何启动
  3. python映射类型-Python 映射类型字典dict操作定义
  4. python是基于什么语言开发-2.python是什么编程语言。
  5. python画图代码彩虹-用python画一颗彩虹色爱心送给女朋友!!!
  6. python开发的软件sparrow-sparrow
  7. python代码块-Python 代码块
  8. python工程师薪资坑吗-Python中反人类直觉的特性,你踩过坑吗?
  9. python编程培训-马哥教育官网-专业Linux培训班,Python培训机构
  10. python一次性读取整个文件-python – 如何一次读取和附加到文本文件?