6_14 Abbott的复仇(UVa816)<图的最短路BFS>
1999次世界总决赛的比赛包括一个骰子迷宫问题。在这个问题被写的时候,法官们无法发现骰子迷宫概念的原始来源。不久之后的比赛,但是,罗伯特先生雅培,无数的迷宫和对作者的创造者主题,联系大赛评委,自称是骰子迷宫的鼻祖。很遗憾,我们没有信用艾伯特他原来的概念在去年的问题陈述。但是我们很高兴地报告,Abbott先生提供了自己的专业知识,这一年他的原创大赛未穿过箭头迷宫。
例如大多数的迷宫,走过迷宫是被箭从交叉路口直到达到目标路口。由于每个路口从一个给定的方向接近,靠近路口的一个标志指示在哪个方向的交叉点可以退出。
这些方向总是左,向前或向右,或任何组合这些。
图1显示了一个通过箭头迷宫行走。交叉口是出(行,列)对,以左上为(1,1)。图1入口路口(3,1),和目标相交(3,3)。你开始迷宫由向北从(3,1)。当你走在(3,1)为(2,1),标志在(2,1)表明,当你接近(2,1)从南(向北行驶)你可以继续走了。继续前进会带你走向(1,1)。标志在(1,1)作为你的方法从南表明你可以退出(1,1)只有通过正确。这让你到东方步行从(1,1)向(1,2)。到目前为止还没有做出选择。同样的情况,当你继续从(1,2)到(2,2)到(2,3)到(1,3)。现在,然而,当你移动向西方(1,3)(1,2),你必须继续直或左转弯的选择。继续直将带你走向(1,1),向左,你会南(2,2)。实际的(独特的)这个迷宫求解下列顺序交叉:(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)。
你必须写一个程序来通过箭头走迷宫的有效解决。解一个迷宫就意味着(如果可能的话)找到一条穿过规定方向的迷宫的路径,并在目标中结束。这条路线不应该比必要的时间长,当然。

【输入】
输入文件将包含一个或多个箭头的迷宫。每个迷宫的描述的第一行包含迷宫的名字,这是不超过20个字符的字母数字字符串。下一行包含,在以下顺序中,起始行、起始列、起始方向、目标行,最后的目标列。所有被一个空格分隔。这个问题的最大尺寸为9,为9,因此所有行和列数字为9至1的单位数。
起始方向为北、南、东、西三个字符的字符之一,分别为。
迷宫的所有剩余的输入线都有这样的格式:2个整数,一个或多个字符组,和哨兵的星号,又都用一个空格分隔。整数代表行和列,一个迷宫的交叉路口。每个字符组表示该路口的一个标志。小组中的第一个字符是“氮”,“电子”或“瓦特”,以指示在什么方向的旅行的标志将被看到。例如,“”表示,这是在南部旅行时所看到的标志。(这是第一个方向的字符是一对三个箭头字符。这些可以是'升','福'或'的指示左,向前,和权利,分别。
在第一列中包含一个单一的零的行的列表的交点。下一行的输入开始下一个迷宫等。输入端是一行的“结束”这个词本身。
【输出】
对于每一个迷宫,输出文件应该包含一行名称的迷宫,然后由一个或多个线与一个解决方案的迷宫或短语'没有可能的解决方案。迷宫的名字应该在1列开始,和所有其他线路应在3列,即开始,缩进两个空格。解决方案应输出为一个列表的格式的交叉点(的),他们被访问的目标,应该由一个单一的空间分隔,所有的解决方案的最后一行应该包含10个交叉点。
注:
罗伯特秘密穿过箭头迷宫实际上是用于大规模的建设,而不是纸。虽然他的迷宫是未发表的,他们中的一些人实际上已建成。其中一个是在亚特兰大博物馆展出。其他人已经在过去两年的暑假里建造了美国迷宫公司。正如它们的名字所表明的这些迷宫都要走过。
为爱冒险,2图形罗伯特伦敦的亚特兰大的迷宫图。
即使你对整个迷宫有一个概要的解决,解决这个问题也是相当困难的。想象一下,如果你在迷宫中穿行,只看到了一个问题。
一个符号在一个时间!罗伯特雅培自己表明,迷宫太复杂,大多数人放弃之前整理。
没有放弃的人是唐纳德:他花了三十分钟解决迷宫。
图1:通过箭头MAZ以下示例中输入第一个迷宫图1例走迷宫。

Sample Input
SAMPLE
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
NOSOLUTION
3 1 N 3 2
1 1 WL NR *
1 2 NL ER *
2 1 SL WR NFR *
2 2 SR EL *
0
END
Sample Output
SAMPLE
(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)
NOSOLUTION
No Solution Possible
6_14 Abbott的复仇(UVa816)<图的最短路BFS>的更多相关文章
- 6-14 Abbott的复仇 uva816
我的第一题bfs 将方向固定 NESW 然后左转和右转就是+3和+1!!! 还有就是 建立一个数组 储存父节点 这样就可以往回打印出路径 打印的截至条件是 d[][][]==0时 说明到 ...
- 图的DFS和BFS(邻接表)
用C++实现图的DFS和BFS(邻接表) 概述 图的储存方式有邻接矩阵和邻接表储存两种.由于邻接表的实现需要用到抽象数据结构里的链表,故稍微麻烦一些.C++自带的STL可以方便的实现List,使算 ...
- 图的DFS与BFS
图的DFS与BFS(C++) 概述 大一学生,作为我的第一篇Blog,准备记录一下图的基本操作:图的创建与遍历.请大佬多多包涵勿喷. 图可以采用邻接表,邻接矩阵,十字链表等多种储存结构进行储存,这里为 ...
- Java数据结构——图的DFS和BFS
1.图的DFS: 即Breadth First Search,深度优先搜索是从起始顶点开始,递归访问其所有邻近节点,比如A节点是其第一个邻近节点,而B节点又是A的一个邻近节点,则DFS访问A节点后再访 ...
- [uva816]AbbottsRevenge Abbott的复仇(经典迷宫BFS)
这题思路就普通的BFS加上一个维度朝向,主要是要注意输入,输出,以及细节的处理 #include<cstdio> #include<cstring> #include<q ...
- UVA816 Abbott的复仇 Abbott's Revenge
以此纪念一道用四天时间完结的题 敲了好几次代码的出错点:(以下均为正确做法) memset初始化 真正的出发位置必须找出. 转换东西南北的数组要从0开始. bfs没有初始化第一个d 是否到达要在刚刚取 ...
- uva 816 Abbott的复仇
题目链接:https://uva.onlinejudge.org/external/8/816.pdf 紫书:P165 题意: 有一个最多包含9*9个交叉点的迷宫.输入起点.离开起点时的朝向和终点,求 ...
- 算法入门经典第六章 例题6-14 Abbott的复仇(Abbott's Revenge)BFS算法实现
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 SF ...
- UVa 816 Abbott的复仇(BFS)
寒假的第一道题目,在放假回家颓废了两天后,今天终于开始刷题了.希望以后每天也能多刷几道题. 题意:这道BFS题还是有点复杂的,给一个最多9*9的迷宫,但是每个点都有不同的方向,每次进入该点的方向不同, ...
随机推荐
- php文件操作(最后进行文件常用函数封装)
文件信息相关API $filename="./1-file.php"; //filetype($filename):获取文件的类型,返回的是文件的类型 echo '文件类型为:', ...
- 关闭 APIPA
遇到的问题:我在网卡2上设置了静态ip,可是出现了一个奇怪的ip地址169.254.*.*,如下图. 解决方法:关闭APIPA功能 按照下述的做法,自己在win7企业版上尝试了下,有效.不再出现169 ...
- 通过nginx实现多个域名访问同一个服务器
一台服务器通过nginx配置多个域名(80端口) 参考:https://www.cnblogs.com/ruanjianlaowang/p/11182486.html 1. 问题描述 多个域名对应一 ...
- Leetcode Week4 Find Minimum in Rotated Sorted Array II
Question Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforeha ...
- xmlns:android="http://schemas.android.com/apk/res/android 这句话的作用
xmlns:android="http://schemas.android.com/apk/res/android 有了这句话,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么 ...
- python基础数据类型整理
一.数据类型 (一).小技巧 1.PyCharm:选中多行,按"Ctrl+/"可批量注释掉 (二).字符串 1.startswith(str,[,start][,end]) #判断 ...
- 网络流EK算法模板
\(EK\)算法的思想就是每一次找一条增广路进行增广. 注意几个点: 存图时\(head\)数组要设为\(-1\). 存图的代码是这样的: inline void add(int u, int v, ...
- jQuery操作css
jQuery addClass() 方法 向被选中元素添加class属性,参数为属性值 $("div").addClass("imp"); 也可以同时向多个元素 ...
- Codeforces Round #614 (Div. 2) A-E简要题解
链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...
- 三剑客-sed awk
目录 1.sed 2.awk 1.sed //sed命令 #语法说明:命令 参数 条件+处理= (指令) 处理文件信息 字符流编辑工具(行编辑工具)==按照每行中的字符进行处理操作 ). 擅长对行进 ...