UVa 705:Slash Maze, 斜线迷宫

题目链接:

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=105&page=show_problem&problem=646

题目类型: 搜索

题目:

By filling a rectangle with slashes (/) and backslashes ( ), you can generate nice little mazes. Here is an example:

As you can see, paths in the maze cannot branch, so the whole maze only contains cyclic paths and paths entering somewhere and leaving somewhere else. We are only interested in the cycles. In our example, there are two of them.

Your task is to write a program that counts the cycles and finds the length of the longest one. The length is defined as the number of small squares the cycle consists of (the ones bordered by gray lines in the picture). In this example, the long cycle has length 16 and the short one length 4.

题目大意翻译:

用斜线和反斜杠来填写一个矩形,您可以生成漂亮的小迷宫。这里有一个例子:

如上图,可以组成一个迷宫,斜线和反斜杠相当于是迷宫的墙,路径在迷宫中不能分支, 所以整个迷宫只包含循环路径封闭(无法走出迷宫),

还有的路径是通向迷宫外面的。

你的任务是写一个程序, 计算出所形成的迷宫有多少个封闭路径(循环路径),以及计算出其中最长的封闭路径有多长。

样例输入:

6 4\//\\/\///\///\\/\\/\///3 3///\//\\\0 0

样例输出:

Maze #1:
2 Cycles; the longest has length 16.

Maze #2:
There are no cycles.

分析与总结:

初看这题时,有点无所适从,主要是所给的图像并不是按常规、方格是斜着放的,这样的话,比较难转换成用数组来存。

后来,我发现题目所给的斜杆的长度是一个格子长的两倍,于是,便很自然的想到把原来的图像扩大两倍,在数组中用两个格子来存储一根斜线。

这样的话,就可以用数组来表示这个图像。

转换后的图如下(画得有点搓)

其中,五角星代表的格子数组中是空的(可以用一个符号来表示),这些格子是可以走的。

转换后,就可以很简单的用搜索做出这道题了。

其中需要注意的地方:  搜索时,可以往8个方向走,其中,往上、下、左、右走时,如果那个格子为空的,那么就可以直接走过去。

但是如果往斜着方向走时,仅仅是空的还不足以判断可以走,还需要再特判。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 迷宫
, 路径
, 队列 迷宫
, 迷宫求解
, 迷宫路径输出问题
, 小迷宫
, The
, C语言走迷宫游戏
, 迷宫地牢
, 斜线
, 斜着移动
格子
恶魔迷宫evilmaze攻略、恶魔迷宫evilmaze下载、性迷宫maze、恶魔迷宫devilmaze、淫魔迷宫 evil maze,以便于您获取更多的相关知识。

时间: 2024-10-31 20:59:42

UVa 705:Slash Maze, 斜线迷宫的相关文章

UVa 784:Maze Exploration 搜索专题

题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=105&page=show_problem&problem=725 题目类型: 搜索 样例输入: 2 XXXXXXXXX X X X X * X X X X XXXXXXXXX X X X X X X XXXXX _____ XXXXX X X X * X X X XXXXX _____ 样例输出: XXXX

迷宫求解非递归 DFS BFS(应用栈和队列)

栈和队列的应用对迷宫问题求解 没有递归 自己手动建的栈和队 并且输出路径 DFS的路径就是 栈中的坐标 BFS的路径在队又开了一个域存上一层的base值 语言还是用的C++ 感觉比C的封装性好很多 充分体会了一下DFS一边比BFS快 但是BFS是最优解而DFS可能不是最优解   #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace

数据结构 迷宫问题-错误 27 error C2449: 在文件范围内找到“{”(是否缺少函数头?)

问题描述 错误 27 error C2449: 在文件范围内找到"{"(是否缺少函数头?) #include#include #define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREAMENT 10 //存储空间分配增量#define num 10 typedef int MazeType[num][num];int curstep; //定前当前足迹MazeType m = {0000000000 typedef struct

【Qt编程】3D迷宫游戏

       说起迷宫想必大家都很熟悉,个人感觉迷宫对人的方向感是很大的考验,至少我的方向感是不好的,尤其是在三维空间中.由于这段时间帮导师做项目用到了三维作图,便心血来潮想做个三维迷宫玩玩.要想画出三维的迷宫游戏,我们需要先从二维开始. 二维迷宫: 迷宫的程序描述:         现实生活中,我们经常将问题用数学的方法来描述并解决(数学建模).同样的,我们想用程序来解决问题,就得把问题程序化.废话不多说,进入正题:         我们可以用一个矩阵matrix来描绘整个迷宫:元素为1,代表

网络间谍活动月光迷宫已演变成Turla

Thomas Rid经过大量的调查分析,在近期的安全分析师峰会(SAS)报告中指出:Moonlight Maze(月光迷宫)网络间谍们已经演变成了目前的Turla. 网络间谍活动月光迷宫已演变成Turla-E安全 1996年10月7日,美国科罗拉多矿业大学遭遇网络入侵.入侵者利用设备上安装的SUN OS4操作系统中的漏洞袭击了一台位于该校布朗大楼(Brown Building)内.昵称为"Baby_Doe"的电脑.他们通过这台电脑辗转进入美国国家航空航天局.美国海军和空军总部及遍及全美

python 回溯法 子集树模板 系列 —— 2、迷宫问题

问题 给定一个迷宫,入口已知.问是否有路径从入口到出口,若有则输出一条这样的路径.注意移动可以从上.下.左.右.上左.上右.下左.下右八个方向进行.迷宫输入0表示可走,输入1表示墙.为方便起见,用1将迷宫围起来避免边界问题. 分析 考虑到左.右是相对的,因此修改为:北.东北.东.东南.南.西南.西.西北八个方向.在任意一格内,有8个方向可以选择,亦即8种状态可选.因此从入口格子开始,每进入一格都要遍历这8种状态. 显然,可以套用回溯法的子集树模板. 注意,解的长度是不固定的. 图片来源:点我 代

计算机专业常用英语

计算机专业常用英语 1.  file    n. 文件:v. 保存文件 2.  command    n. 命令,指令 3.  use    v. 使用,用途 4.  program    n. 程序 5.  line    n. (数据,程序)行,线路 6.  if    conj. 如果 7.  display    vt. 显示,显示器 8.  set    v. 设置,n. 集合 9.  key    n. 键,关键字,关键码 10.  list    n. 列表,显示,v. 打印 11

计算机专用英语词汇1695个词汇表

特别感谢: 不愿意透露姓名的小虾同学提供的音标部分 1.单词说明: command n. 命令,指令 [kə'mɑ:nd] 单词拼写 名词 单词含义 音标(发音) 提示:着重记忆单词对应的意思,有能力最好词性也记忆. 2.词性说明: n       v      vi                 vt      conj  prep  pron  adj     adv  名词  动词  非及物动词  及物动词  连词  介词   代词   形容词  副词  3.单词列表:  1.file,

程序风格的要素-C++风格指南

译者序:这是一篇写于1996年1月23日的文章,到现在已经有9个年头了,很陈旧,有可能跟不上形势,但是有些东西仍然值得现在的开发者学习,我翻译这篇文字仅供读者参考. 原文链接:http://www.gamedev.net/reference/articles/article708.asp 文件 头文件有".h"后缀.头文件包含类(class),结构(struct),和联合(union)的声明,枚举(enum)的声明,#define,typedef. 实现文件有一个".cc&q