poj1475 -- Pushing Boxes】的更多相关文章

POJ1475 Pushing Boxes  推箱子,#表示墙,B表示箱子的起点,T表示箱子的目标位置,S表示人的起点 本题没有 Special Judge,多解时,先最小化箱子被推动的次数,再最小化人移动的步数.若仍有多条路线,则按照N.S.W.E的顺序优先选择箱子的移动方向(即先上下推,再左右推).在此前提下,再按照n.s.w.e的顺序优先选择人的移动方向(即先上下动,再左右动). 每个阶段的状态包括人的位置,箱子的位置,由于每次在移动箱子之后,认得位置一定位于箱子之前的位置,所以可以将每次…
Description Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not be filled with rock. You can move north, south, east or west one cell at a step. These moves are called walks. One of the empty cells con…
题目链接 http://poj.org/problem?id=1475 题意 推箱子游戏.输入迷宫.箱子的位置.人的位置.目标位置,求人是否能把箱子推到目标位置,若能则输出推的最少的路径,如果有多条步数相同的推的最少的路径,则输出总步数(人走的步数+推箱子的步数)最少的那条路径:若不能把箱子推到目标位置,则输出Impossible. 思路 先求出箱子到目标位置的最短路径(bfs_box),在bfs1推箱子的过程中,根据推的方向和箱子的位置得到人的位置,再求得人到达这个位置的最短路(bfs_per…
描述 Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not be filled with rock. You can move north, south, east or west one cell at a step. These moves are called walks. One of the empty cells contains a b…
这道题其实挺有趣 的,这让我想起小时候诺基亚手机上的推箱子游戏(虽然一点也不好玩) (英文不好-->)  题意翻译: 初始人(S),箱子(B),目的地(T)用人把箱子推到 T最小步数及其路径(满足最小步数的任何一条都可),如果不可行输出"Impossible." 思路: 我们可以把这当作一次游戏,过程在于人推箱子,使箱子到终点并尽量快(步数小). 于是--我们能想到:重点是箱子[人只是个辅助] 所以我们先利用bfs搜索最短迷宫路径的方式,找到箱子所到达最短路径,中间穿插 人到能推…
woc累死了写了两个半小时...就是BFS?我太菜了... 刚开始以为让人预先跑一遍BFS,然后一会儿取两节加起来就好了,结果发现求出来的最短路(就是这个意思)会因箱子的移动而变化....我死了QWQ 康康书上正解:双重BFS?!!让人推箱子的时候再跑一遍BFS?!!时间不就爆炸了?!!啊n,m只有20...我死... 乖乖打正解..结果又不知道如何传人BFS时的答案...想了半天..就是开一个全局跑完人的BFS直接用就行了... 然后BFS跳出的时候还写错了..否则更新不了 #include<…
地址. 很重要的搜索题.★★★ 吐槽:算是写过的一道码量比较大的搜索题了,细节多,还比较毒瘤.虽然是一遍AC的,其实我提前偷了大数据,但是思路还是想了好长时间,照理说想了半小时出不来,我就会翻题解,但是这次总觉得自己快想出来了结果磕了两个小时才想到正解上.嘛主要还是我太弱了QwQ. 题目内容很简单.给一张图20*20,推箱子,求推动次数最少的路径,有推动次数相同方案时输出走路次数最少的路径. 乍一看这题觉得很棘手.箱子在动,人还要来回跑来跑去,虽然可以感觉出来是搜索题,但怎么搜?DFS效率太低明…
题目在这里 题目一看完就忙着回忆童年了.推箱子的游戏. 假设只有一个箱子.游戏在一个R行C列的由单位格子组成的区域中进行,每一步, 你可以移动到相邻的四个格子中的一个,前提是那个格子是空的:或者,如果你在箱子旁边,你也可以推动箱子前进一格,当然不能推到区域外面. 初始时你在其中某个格子内,你要把箱子推到指定格子.又由于箱子很重,所以你要用尽量少的推动次数. Input 输入包含多组数据,每组数据第一行为两个正整数R和C,表示行数和列数.接下来R行,每行C个字符,描述游戏区域.用’#’表示石块,用…
题目传送门 首先说明我这个代码和lyd的有点不同:可能更加复杂 既然要求以箱子步数为第一关键字,人的步数为第二关键字,那么我们可以想先找到箱子的最短路径.但单单找到箱子的最短路肯定不行啊,因为有时候不能被推动,怎样确定一条既满足最短又满足可行的箱子路径呢,其实这就是一种有限制的BFS. 对于箱子: 设现在的位置为x,y,扩展方向为dx,dy,将要到达的下一个位置为x+dx,y+dy check它是否可行: 1.不越界. 2.之前没有走过. 3.不能走到“#”上. 4.人能够从当前站立的位置到达(…
http://poj.org/problem?id=1475 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=249 Pushing Boxes Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 4662   Accepted: 1608   Special Judge Description Imagine you are standing insid…