本文来源于: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. POJ 2756 Autumn is a Genius 大数加减法

    Description Jiajia and Wind have a very cute daughter called Autumn. She is so clever that she can d ...

  2. JDBC数据库连接

    JDBC是什么? Java Data Base Connectivity JDBC是: 以统一方式訪问数据库的API,能够訪问不论什么类型表列数据.特别是存储在关系数据中的数据.JDBC代表Java数 ...

  3. Spring实战笔记2---Bean的装配

    创建应用对象之间协作关系的行为通常成为装配,该篇的主要内容有两个,一个Spring装配Bean的几种方式以及Spring表达式,事实上这两者是分不开的,在Spring中,对象无需自己负责查找或者创建与 ...

  4. [置顶] ios 时间定时器 NSTimer应用demo

    原创文章,转载请注明出处:http://blog.csdn.net/donny_zhang/article/details/9251917 demo功能:ios NSTimer应用demo .ipho ...

  5. Java Executor 框架

    Java Executor 框架 Executor框架是指java5中引入的一系列并发库中与executor相关的功能类,包括Executor.Executors. ExecutorService.C ...

  6. 无法解析该名称 outlook必须处于联机,控制面板删除账户

    无法解析该名称 outlook必须处于联机,控制面板删除账户

  7. Redhat 6.3中syslog信息丢失

    我们採用Linux的syslog来记录产品的debug log. 调用当中的一个可运行文件.运行完命令之后,查看debug log的信息,竟然从某一条log之后的log都丢失了.多次尝试后,发现每次都 ...

  8. Android编程之LayoutInflater的inflate方法实例

    假设你不关心其内部实现,仅仅看怎样使用的话,直接看这篇就可以. 接上篇,接下来,就用最最简单的样例来说明一下: 用两个布局文件main 和 test: 当中,main.xml文件为: <?xml ...

  9. 用数组array代替CActiveRecord构建CArrayDataProvider

    当需要构建 GridView的时候: 常常用 CArrayDataProvider 或者 CActiveDataProvider 这是就需要一个CActiveRecord 比如:  857       ...

  10. android LinearLayout等view如何获取button效果

    我们可以给LinearLayout以及一切继承自View的控件,设置View.onClickListener监听,例如LInearLayout. 但是我们发现LinearLayout可以执行监听方法体 ...