`
yuanlanxiaup
  • 浏览: 896241 次
文章分类
社区版块
存档分类
最新评论

POJ 2049 走迷宫选取经过门最少的路线 BFS搜索

 
阅读更多

很经典的BFS搜索 走迷宫选取经过门最少的路线,这题POJ测试数据设计不全面,changeDir数组赋值错误也可以过。。。

主要图的数据结构存储方式和算法实现参考了http://blog.csdn.net/bobten2008/article/details/5093307

(1)首先是建图, 由于输入给的都是线段, 但是我们平常处理这类问题都是转换为网格来做的, 因此需要将线段转换为网格.转化的方法是对于每个格子,用其左上角点的坐标来表示这个格子。如果其左上角点的坐标是[i][j],那么这个格子就表示为[i][j].将其四周边界的四条线段归这个格子管.即为每个格子建一个数组round[i][j][4],第三维的四个位置分别表示这四条线段的类型(0-3分别对应上下左右): 数组元素的值0表示空气,1表示墙,2表示是一扇门,这样这个模型就建立好了.

(2)其次是bfs的起始点选为Nemo所在的位置,注意要将这个浮点点位置转化为格子的坐标.转化的方法很简单.对于x坐标取整即可,对于y坐标取整+1即可,比如Nemo所在位置为[1.2, 1.3]那么转化为格子的坐标即为:[1, 2].这个坐标即位bfs遍历的起始点
(3)遍历的时候如果所走的方向是墙,则不可走.如果是门则将当前总的steps数+1,如果为空气,steps数不变.另外一点就是如何判重.判重不能简单地记录有没有被访问过,而是需要记录到当前格子的最小步骤.如果当前总步骤数小于当前格子的最小步骤数,则更新其最小步骤数并将这个格子加入队列中.

(4)遍历的终止位置即为题目中的出发位置[0, 0]

Source Code

Problem: 2049 User: yangliuACMer
Memory: 1160K Time: 250MS
Language: C++ Result: Accepted


分享到:
评论

相关推荐

    POJ1426-Find The Multiple【BFS+同余模】

    【标题】"POJ1426-Find The Multiple【BFS+同余模】"是一道来源于北京大学在线编程平台POJ的算法题目,主要涉及到了广度优先搜索(BFS)与同余模运算的知识点。这道题目要求解决的是寻找一个整数的倍数问题,可能...

    POJ3026-Borg Maze【BFS+Prim】

    《POJ3026-Borg Maze:BFS与Prim算法的应用解析》 在计算机科学领域,图论是解决问题的重要工具之一,而BFS(广度优先搜索)和Prim算法则是其中的两种经典算法。本篇文章将围绕北大POJ3026题目“Borg Maze”来探讨...

    POJ_3131.zip_POJ 八数码_poj

    标题中的“POJ_3131.zip_POJ 八数码_poj”指的是一个与编程竞赛网站POJ(Problem Set Algorithm)相关的项目,具体是针对3131号问题的解决方案,该问题涉及到了八数码游戏。八数码游戏,又称滑动拼图,是一个经典的...

    北大POJ初级-简单搜索

    在实际编程实践中,理解并熟练运用简单搜索算法是基础,随着能力的提升,还会接触到更高级的搜索算法,如深度优先搜索(DFS)、广度优先搜索(BFS),以及二叉搜索树等更复杂的搜索结构。在POJ平台上不断挑战和解决...

    POJ题目分析与理解

    POJ题目分析与理解 POJ(Peking University Online Judge)是一款在线评测系统,旨在帮助程序员提高编程能力和解决问题的能力。该系统提供了大量的编程题目,涵盖了算法、数据结构、数学、动态规划、博弈论等多个...

    搜索入门之BFS深度优先搜索.ppt

    练习题目方面,你可以尝试使用BFS解决诸如迷宫问题、寻找两个数字之间变换的最少操作数等任务。例如,"Munching" 和 "Catch That Cow" 这样的问题就可以通过搜索算法来解决。POJ网站上也有一些适合练习的题目,如...

    NOI2002.rar_NOI 2002 dragon_poj bfs

    这表明我们即将讨论的是2002年全国青少年信息学奥林匹克竞赛中的一道题目,该题目可能涉及到了使用广度优先搜索(BFS)算法在POJ(编程在线判题系统)上实现并获得正确答案的情况。 首先,让我们来了解一下NOI...

    poj各种分类

    DFS和BFS不仅是图算法的核心,也是解决许多搜索问题的基础,如poj2488和poj3278所示。 #### 剪枝技术 在搜索过程中去除无效或低效的搜索路径,提高搜索效率,如poj2531和poj1416。 ### 五、动态规划 #### 背包...

    POJ1753-Flip Game

    通过BFS可以找到达到目标状态的最短路径,即最少的翻转次数。 三、DFS+枚举解决方案 1. **深度优先搜索**:DFS可以用于穷举所有可能的操作序列。从初始状态出发,递归地尝试所有可能的翻转,直到达到目标状态或所有...

    poj2775.rar_poj_poj 27_poj27_poj2775

    标签"poj poj_27 poj27 poj2775"进一步确认了这是一道关于POJ平台的编程挑战,其中"poj_27"可能是表示第27类问题或者某种分类,而"poj27"可能是对"poj2775"的简写。 压缩文件中的"www.pudn.com.txt"可能是一个链接...

    ACM-POJ 算法训练指南

    2. **搜索**:涉及广度优先搜索(BFS)和深度优先搜索(DFS)(poj1328, poj2109, poj2586),是解决图问题的关键。 3. **贪心算法**:通过局部最优选择来达到全局最优解的方法,如背包问题(poj3295)。 4. **动态...

    poj pku图论、网络流入门题总结、汇总

    根据提供的标题“poj pku图论、网络流入门题总结、汇总”及描述“很经典的图论,网络流入门的题目,值得一看啊~~其中有简单的解析”,本篇将对这些经典图论与网络流问题进行详细的分析和总结。通过梳理各题目及其...

    POJ1011-Sticks

    【标题】"POJ1011 - Sticks" 是一个经典的计算机编程竞赛题目,源自北京大学的在线评测系统POJ(PKU Online Judge)。这个题目挑战程序员解决与几何图形和数学逻辑相关的问题。 【描述】该题目的核心是求解在二维...

    acm poj300题分层训练

    如poj3278、poj2049、poj3083是图遍历的例子,poj1860、poj3259等则是最短路径问题,poj1789、poj2485等则涉及最小生成树。 3. **数据结构**:包括串、排序、简单并查集、哈希表、二分查找、哈夫曼树和堆。poj1035、...

    POJ 部分题解 解题报告

    5. **PKU 1010 搜索.txt**:搜索问题通常包括深度优先搜索(DFS)、广度优先搜索(BFS)或A*搜索算法。可能需要解决路径查找、迷宫求解等问题。 6. **POJ 3468 线段树--long long VS int.txt**:线段树是处理区间...

    POJ算法题目分类

    * 深度优先搜索:深度优先搜索是指解决问题的深度优先搜索算法,如 poj2488、poj3083、poj3009、poj1321、poj2251。 * 广度优先搜索:广度优先搜索是指解决问题的广度优先搜索算法,如 poj3278、poj1426、poj3126、...

    POJ中级搜索全部练习【解题报告+AC代码】

    在编程竞赛中,搜索算法是解决许多问题的常用方法之一,尤其在POJ(Problemset of Peking University)这个由北京大学主办的在线判题系统中,中级搜索问题更是对参赛者算法设计能力的深入考验。中级搜索问题通常要求...

    POJ 1077 算法

    这是一个典型的图搜索问题,常见的解决方法包括深度优先搜索(DFS)、广度优先搜索(BFS)以及A*搜索算法。 在八数码问题中,我们需要定义数据结构来表示当前的状态,通常是一个9个元素的一维数组,其中0代表空白...

    POJ 2676 代码 搜索数独答案

    简单搜索题 数独 答案 POJ 2676 也可以没事玩玩数独。

Global site tag (gtag.js) - Google Analytics