UVA816 Abbott的复仇 Abbott's Revenge】的更多相关文章

以此纪念一道用四天时间完结的题 敲了好几次代码的出错点:(以下均为正确做法) memset初始化 真正的出发位置必须找出. 转换东西南北的数组要从0开始. bfs没有初始化第一个d 是否到达要在刚刚取出队首时就判断,因为可能真正的起点和终点是一个. 要判断v.x,v.y都是否在1~9之间. 打印No Solution Possible前要空两格? 把路径放到vector里时不要漏放,错放. 放进去后要倒序输出. 每十个一行,还要有空格. 最后切换数据时还要在判断需不需打个换行. 记录东西南北偏移…
Sample Input 3 1 N 3 3 1 1 WL NR * 1 2 WLF NR ER * 1 3 NL ER * 2 1 SL WR NF * 2 2 SL WF ELF * 2 3 SFR EL * 0 Sample Output (3,1) (2,1) (1,1) (1,2) (2,2) (2,3) (1,3) (1,2) (1,1) (2,1) (2,2) (1,2) (1,3) (2,3) (3,3) 析 题目的大意是,输入起点,离开起点时的朝向和终点,求一条最短路. 每一个…
1999次世界总决赛的比赛包括一个骰子迷宫问题.在这个问题被写的时候,法官们无法发现骰子迷宫概念的原始来源.不久之后的比赛,但是,罗伯特先生雅培,无数的迷宫和对作者的创造者主题,联系大赛评委,自称是骰子迷宫的鼻祖.很遗憾,我们没有信用艾伯特他原来的概念在去年的问题陈述.但是我们很高兴地报告,Abbott先生提供了自己的专业知识,这一年他的原创大赛未穿过箭头迷宫.例如大多数的迷宫,走过迷宫是被箭从交叉路口直到达到目标路口.由于每个路口从一个给定的方向接近,靠近路口的一个标志指示在哪个方向的交叉点可…
我的第一题bfs 将方向固定  NESW  然后左转和右转就是+3和+1!!! 还有就是  建立一个数组 储存父节点  这样就可以往回打印出路径   打印的截至条件是 d[][][]==0时  说明到了起点 代码bfs写吐了  之后附上…
这题思路就普通的BFS加上一个维度朝向,主要是要注意输入,输出,以及细节的处理 #include<cstdio> #include<cstring> #include<queue> #include<vector> using namespace std; const int MAX = 9+1; const int DIR = 4; const int TURN = 3; bool have_edge[MAX][MAX][DIR][TURN];//所在位置…
题目:有一个最多包含9*9个交叉点的迷宫.输入起点.离开起点时的朝向和终点,求一条最短路(多解时任意输出一个即可). 这个迷宫的特殊之处在于:进入一个交叉点的方向(用NEWS这4个字母分别表示北东西南,即上右左下)不同,允许出去的方向也不同.例如,12WLFNRER*表示交叉点(1, 2)(上数第1行,左数第2列)有3个路标(字符"*" 只是结束标志), 如果进入该交叉点时的朝向为W(即朝左), 则可以左转(L)或者直行(F); 如果进入时朝向为N或者E则只能右转(R),如下图:   分析:此题…
题目链接:https://uva.onlinejudge.org/external/8/816.pdf 紫书:P165 题意: 有一个最多包含9*9个交叉点的迷宫.输入起点.离开起点时的朝向和终点,求一条最短路(多解时任意输出一个即可). 分析: BFS的结点对状态转移的影响的因素有哪些,那么这个结点就要包含哪些信息. 左右,和东南西北的转换. 首先规定东南西北的顺时针.根据左右转向求出下一个方位. 下一个节点的坐标是有当前位置,和下一个状态的方向决定. 图的构建也是根据对结点状态转移的影响建图…
寒假的第一道题目,在放假回家颓废了两天后,今天终于开始刷题了.希望以后每天也能多刷几道题. 题意:这道BFS题还是有点复杂的,给一个最多9*9的迷宫,但是每个点都有不同的方向,每次进入该点的方向不同,允许出去的方向也不同.所以在记录迷宫的时候比较麻烦,可以用一个四元组has_edge[10][10][4][4]来记录,前两个元素代表坐标点,第三个元素代表进入该点时的方向,第四个元素代表离开该点时的方向.在BFS遍历时还是和以前的题目差不多的,记录好路径,最后回溯输出就行. 我还犯了个小错误,因为…
题意: 有一个最多9*9个点的迷宫, 给定起点坐标(r0,c0)和终点坐标(rf,cf), 求出最短路径并输出. 分析: 因为多了朝向这个元素, 所以我们bfs的队列元素就是一个三元组(r,c,dir),然后做好输入处理的细节, 这题的关键在于bfs中的路径还原. 其实bfs的过程就是一棵树,如下图 除了起点外, 每个点都有且只有一个父亲节点, 那么我们只需要开一个pre数组来记录每个点的父亲, 找到终点后从终点往上不断找父亲节点, 直到找到父亲节点, 那么就完成了路径还原的 步骤. #incl…
首先,我们要知道BFS的思想,BFS全称是Breadth-First-Search. 二叉树的BFS:通过BFS访问,它们的访问顺序是它们到根节点距离从小到大的排序. 图的BFS:同样的,离起点越近,越早被访问到. 例题1: Abbott的复仇(Abbott's Revenge,ACM/ICPC World Finals 2000,UVa 816) 题目描述:有一个最多包含9x9个交叉点的迷宫.输入起点.起始朝向.终点,求最短路. 这个迷宫的特殊之处在于:进入一个交叉点的方向不同(NEWS:N朝…