很经典的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+同余模】"是一道来源于北京大学在线编程平台POJ的算法题目,主要涉及到了广度优先搜索(BFS)与同余模运算的知识点。这道题目要求解决的是寻找一个整数的倍数问题,可能...
《POJ3026-Borg Maze:BFS与Prim算法的应用解析》 在计算机科学领域,图论是解决问题的重要工具之一,而BFS(广度优先搜索)和Prim算法则是其中的两种经典算法。本篇文章将围绕北大POJ3026题目“Borg Maze”来探讨...
标题中的“POJ_3131.zip_POJ 八数码_poj”指的是一个与编程竞赛网站POJ(Problem Set Algorithm)相关的项目,具体是针对3131号问题的解决方案,该问题涉及到了八数码游戏。八数码游戏,又称滑动拼图,是一个经典的...
在实际编程实践中,理解并熟练运用简单搜索算法是基础,随着能力的提升,还会接触到更高级的搜索算法,如深度优先搜索(DFS)、广度优先搜索(BFS),以及二叉搜索树等更复杂的搜索结构。在POJ平台上不断挑战和解决...
POJ题目分析与理解 POJ(Peking University Online Judge)是一款在线评测系统,旨在帮助程序员提高编程能力和解决问题的能力。该系统提供了大量的编程题目,涵盖了算法、数据结构、数学、动态规划、博弈论等多个...
练习题目方面,你可以尝试使用BFS解决诸如迷宫问题、寻找两个数字之间变换的最少操作数等任务。例如,"Munching" 和 "Catch That Cow" 这样的问题就可以通过搜索算法来解决。POJ网站上也有一些适合练习的题目,如...
这表明我们即将讨论的是2002年全国青少年信息学奥林匹克竞赛中的一道题目,该题目可能涉及到了使用广度优先搜索(BFS)算法在POJ(编程在线判题系统)上实现并获得正确答案的情况。 首先,让我们来了解一下NOI...
DFS和BFS不仅是图算法的核心,也是解决许多搜索问题的基础,如poj2488和poj3278所示。 #### 剪枝技术 在搜索过程中去除无效或低效的搜索路径,提高搜索效率,如poj2531和poj1416。 ### 五、动态规划 #### 背包...
通过BFS可以找到达到目标状态的最短路径,即最少的翻转次数。 三、DFS+枚举解决方案 1. **深度优先搜索**:DFS可以用于穷举所有可能的操作序列。从初始状态出发,递归地尝试所有可能的翻转,直到达到目标状态或所有...
标签"poj poj_27 poj27 poj2775"进一步确认了这是一道关于POJ平台的编程挑战,其中"poj_27"可能是表示第27类问题或者某种分类,而"poj27"可能是对"poj2775"的简写。 压缩文件中的"www.pudn.com.txt"可能是一个链接...
2. **搜索**:涉及广度优先搜索(BFS)和深度优先搜索(DFS)(poj1328, poj2109, poj2586),是解决图问题的关键。 3. **贪心算法**:通过局部最优选择来达到全局最优解的方法,如背包问题(poj3295)。 4. **动态...
根据提供的标题“poj pku图论、网络流入门题总结、汇总”及描述“很经典的图论,网络流入门的题目,值得一看啊~~其中有简单的解析”,本篇将对这些经典图论与网络流问题进行详细的分析和总结。通过梳理各题目及其...
【标题】"POJ1011 - Sticks" 是一个经典的计算机编程竞赛题目,源自北京大学的在线评测系统POJ(PKU Online Judge)。这个题目挑战程序员解决与几何图形和数学逻辑相关的问题。 【描述】该题目的核心是求解在二维...
如poj3278、poj2049、poj3083是图遍历的例子,poj1860、poj3259等则是最短路径问题,poj1789、poj2485等则涉及最小生成树。 3. **数据结构**:包括串、排序、简单并查集、哈希表、二分查找、哈夫曼树和堆。poj1035、...
5. **PKU 1010 搜索.txt**:搜索问题通常包括深度优先搜索(DFS)、广度优先搜索(BFS)或A*搜索算法。可能需要解决路径查找、迷宫求解等问题。 6. **POJ 3468 线段树--long long VS int.txt**:线段树是处理区间...
* 深度优先搜索:深度优先搜索是指解决问题的深度优先搜索算法,如 poj2488、poj3083、poj3009、poj1321、poj2251。 * 广度优先搜索:广度优先搜索是指解决问题的广度优先搜索算法,如 poj3278、poj1426、poj3126、...
在编程竞赛中,搜索算法是解决许多问题的常用方法之一,尤其在POJ(Problemset of Peking University)这个由北京大学主办的在线判题系统中,中级搜索问题更是对参赛者算法设计能力的深入考验。中级搜索问题通常要求...
这是一个典型的图搜索问题,常见的解决方法包括深度优先搜索(DFS)、广度优先搜索(BFS)以及A*搜索算法。 在八数码问题中,我们需要定义数据结构来表示当前的状态,通常是一个9个元素的一维数组,其中0代表空白...
简单搜索题 数独 答案 POJ 2676 也可以没事玩玩数独。