本文来源于:http://blog.csdn.net/svitter

称号:让你从(0, 0)走到(4,4)。而且输出路径。

输入数据:二位数组的迷宫;输出数据:路径;

题解:简单的BFS

注意:

1.去重;

2.墙不能走;

3.记录前一个节点

代码:

#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std; int maze[6][6];
bool visit[5][5]; struct node
{
node *pre;
int i;
int j;
node(){}
node(int a, int b, node*c):i(a), j(b), pre(c){}
}; //1.去重
//2.是否墙壁
//
inline bool judge(int i, int j, int temp)
{
if(temp < 0 || temp > 4)
return false; //i, j 能够通行,而且没有訪问过
if(maze[i][j] != 1 && !visit[i][j])
return true; return false; } void output(){} int main()
{
int i, j;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
scanf("%d", &maze[i][j]); node queue[1000];
memset(visit, 0, sizeof(visit)); int front , rear;
front = rear = -1;
node cur;
int temp;
queue[++rear] = node(4, 4, NULL); while(front != rear)
{
cur = queue[++front];
i = cur.i;
j = cur.j;
if(i == 0 && j == 0)
break; temp = cur.i+1;
if(judge(temp, j, temp))
{
queue[++rear] = node(temp, j, &queue[front]);
visit[temp][j] = 1;
} temp = cur.j+1;
if(judge(i, temp, temp))
{
queue[++rear] = node(i, temp, &queue[front]);
visit[i][temp] = 1;
} temp = cur.i-1;
if(judge(temp, j, temp))
{
queue[++rear] = node(temp, j, &queue[front]);
visit[temp][j] = 1;
} temp = cur .j-1;
if(judge(i, temp, temp))
{
queue[++rear] = node(i, temp, &queue[front]);
visit[i][temp] = 1;
}
} node *tmp;
tmp = &queue[front]; while(tmp != NULL)
{
printf("(%d, %d)\n", tmp->i, tmp->j);
tmp = tmp->pre;
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

POJ9384 迷宫(基金会BFS)的更多相关文章

  1. 迷宫问题(bfs)

    import java.util.LinkedList; import java.util.Queue; import java.util.Stack; public class BFS { priv ...

  2. ZZULIOJ 1726 迷宫(BFS+小坑)

    1726: 迷宫 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 394  Solved: 64 SubmitStatusWeb Board Descr ...

  3. HDU 1728 逃离迷宫(BFS)

    Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有 ...

  4. HDU 1728:逃离迷宫(BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description   给定一个m × n (m行, n列)的迷宫,迷宫中有 ...

  5. 迷宫问题(bfs的应用)

    问题描述: 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, ...

  6. [Swust OJ 409]--小鼠迷宫问题(BFS+记忆化搜索)

    题目链接:http://acm.swust.edu.cn/problem/409/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  7. 问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目链接:https://www.dotcpp.com/oj/problem1923.html 题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在 ...

  8. POJ 3984 - 迷宫问题 - [BFS水题]

    题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...

  9. 迷宫问题bfs, A Knight's Journey(dfs)

    迷宫问题(bfs) POJ - 3984   #include <iostream> #include <queue> #include <stack> #incl ...

随机推荐

  1. hdu1330(递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1330 分析:经典问题,n 块相同的木板重叠,最多能够伸出桌面多远 对于n张卡片的最佳摆法,我们只需要在 ...

  2. 使用Django创建简易Blog

    网上看了个例子,但是自己却运行不同,最后终于知道了原因,记录下来.原来没有给settings.py里的INSTALLED_APPS添加blog.就像这样: 这是一个手把手的实例教程,本来学习笔记一样, ...

  3. Unity3d socket通信 切换到web版本时报错SecurityException解决办法

    原文地址:传送门 今天苦战了一天,就跟一个Unity切换到web平台的socket通信出错苦苦纠缠了一天,问了好多大牛,但他们的回复都是我没搞过web平台下的通信或者我只专研于pc或者移动平台.看来没 ...

  4. mongoDB 查询附近的人的语句

    mongoDB 自带LBS查询附近的人 {"location":{ $nearSphere: { $geometry: { type : "Point", co ...

  5. js创建下载文件

    function downloadFile(fileName, content){ var aLink = document.createElement('a'); var blob = new Bl ...

  6. java 通过sftp服务器上传下载删除文件

    最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; imp ...

  7. 使用 DBMS_REPAIR 修复坏块

    对于Oracle数据块物理损坏的情形,在我们有备份的情况下可以直接使用备份来恢复.对于通过备份恢复,Oracel为我们提供了很多种方式,冷备,基于用户管理方式,RMAN方式等等.对于这几种方式我们需要 ...

  8. UML 之 序列图和协作图

    序列图(Sequence Diagram)     亦称为时序图或循序图,是一种UML行为图.它通过描写叙述对象之间发送消息的时间顺序显示多个对象之间的动态协作.它能够表示用例的行为顺序,当运行一个用 ...

  9. C#访问MySQL数据库(winform+EF)

    原文:C#访问MySQL数据库(winform+EF) 以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winf ...

  10. 自己写shell命令pwd

    思维:(1)得到"."的i节点号,叫n(使用stat) (2)chdir ..(使用chdir) (3)找到inode号为n的节点,得到其文件名称. 反复上述操作直到当前文件夹&q ...