题目描述

X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。
房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。
X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把100名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。
迷宫地图如下:
------------
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
------------
请你计算一下,最后,有多少玩家会走出迷宫? 而不是在里边兜圈子。

输出

输出一个整数表示答案
 

提示

为方便理解,可参考此图

答案:31

DFS:

#include<iostream>
#include<queue>
#include<algorithm>
#include<set>
#include<string.h>
using namespace std;
char a[][];
int vis[][];
int ans = ;
void dfs(int i, int j)
{
if (i < || i> || j < || j>) //迷宫的出口
{
ans++;
return;
}
else
{
if (vis[i][j]) return; //如果已经搜过,直接返回 vis[i][j] = ; //标记已搜索 if (a[i][j] == 'L')
dfs(i, j - );
if (a[i][j] == 'R')
dfs(i, j + );
if (a[i][j] == 'U')
dfs(i - , j);
if (a[i][j] == 'D')
dfs(i + , j);
}
}
int main()
{
int i, j;
for (i = ; i < ; i++)
for (j = ; j < ; j++)
cin >> a[i][j]; for (i = ; i < ; i++)
for (j = ; j < ; j++)
{
memset(vis, , sizeof(vis)); //搜索每一个房间时,初始化搜搜数组
dfs(i, j);
}
cout << ans << endl;
return ;
}

暴力:

#include<iostream>
#include<queue>
#include<algorithm>
#include<set>
#include<string.h>
using namespace std;
char a[][],c[][];
int vis[][];
int ans = ;
int main()
{ for (int i = ; i < ; i++)
{
for(int j=;j<;j++)
{
cin>>a[i][j];
c[i][j]=a[i][j];
}
} for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
int x = i, y = j;
memset(vis, , sizeof(vis));
while ()
{ if (a[x][y] == 'U')
{
x = x - ;
if (x < || x> || y < || y>)
{
ans++;
c[i][j]='#';
break;
}
if (vis[x][y] == )
vis[x][y] = ;
else
break;
}
if (a[x][y] == 'L')
{
y = y - ;
if (x < || x> || y < || y>)
{
ans++;
c[i][j]='#';
break;
}
if (vis[x][y] == )
vis[x][y] = ;
else
break;
}
if (a[x][y] == 'R')
{
y = y + ;
if (x < || x> || y < || y>)
{
ans++;
c[i][j]='#';
break;
}
if (vis[x][y] == )
vis[x][y] = ;
else
break;
}
if (a[x][y] == 'D')
{
x = x + ;
if (x < || x> || y < || y>)
{
ans++;
c[i][j]='#';
break;
}
if (vis[x][y] == )
vis[x][y] = ;
else
break;
} }
}
}
cout << ans << endl;
// for(int i=0;i<10;i++)
// {
// for(int j=0;j<10;j++)
// cout<<c[i][j];
// cout<<endl;
// }
return ;
}

[蓝桥杯2017初赛]迷宫 DFS的更多相关文章

  1. 蓝桥杯2019初赛]迷宫(dfs版本)

    传送门 大意: 题目的意思还是模板的搜索,不同的是我们要记录路径了,而且是最短字典序最小的路径. 思路: 1.对于字典序最小,也就是说我们要尽量先往下走,然后是左- 这个很简单,因为在dfs中是顺序枚 ...

  2. [蓝桥杯2017初赛]青蛙跳杯子 BFS

    题目描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙 ...

  3. [蓝桥杯2017初赛]Excel地址

    题目描述 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如,A表示第1列,B表示第2列,Z表示第26列,AA表示第27列,AB表示第28列,BA表示第53列,.... 当然Excel的最 ...

  4. [蓝桥杯2017初赛]k倍区间 前缀和

    题目描述 给定一个长度为N的数列,A1, A2, ... AN. 如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  5. [蓝桥杯2017初赛]跳蚱蜢 BFS

    题目描述 如图所示: 有9只盘子,排成1个圆圈.其中8只盘子内装着8只蚱蜢,有一个是空盘. 我们把这些蚱蜢顺时针编号为 1~8.每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空 ...

  6. 蓝桥杯---数独(模拟 || dfs)

    [编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...

  7. [蓝桥杯2018初赛]小朋友崇拜圈(dfs找环)

    传送门 思路: 题意大意:n条有向边,找出最大环. 我们发现,如果一个小朋友没有被任何人崇拜,那么他一定不位于环中.为此我们可以设置一个indug数组预处理.如果2被崇拜了那么indug[2]就加加, ...

  8. 2019年第十届蓝桥杯省赛-迷宫(BFS/Excel大法)

    这题用dfs搜不出来,需要使用bfs并记录路径,设置好方向顺序跑就ok 正解类似:POJ-3984 迷宫问题 然而毕竟是暴力杯,我们的原则是代码能省就省(懒癌晚期 于是乎网上便出现了形形色色的题解,笔 ...

  9. [蓝桥杯]2017蓝桥省赛B组题目及详解

    /*——————————————————————————————————————————————————————————— [结果填空题]T1 (分值:5) 题目:购物单 小明刚刚找到工作,老板人很好 ...

随机推荐

  1. layuiAdmin std v1.x 【iframe版】开发者文档

    layuiAdmin pro v1.x [单页版]开发者文档 layuiAdmin.std(iframe 版) 是完全基于 layui 架构而成的通用型后台管理模板系统,采用传统的 iframe 多页 ...

  2. 手机CPU那些事

    原文:https://zhuanlan.zhihu.com/p/19923974 如今人们买手机,都比较关心采用了什么 CPU,因为 CPU 直接决定了这台手机的性能,CPU 之于手机 就好比人的大脑 ...

  3. Java面向对象编程 -6.3

    foreach迭代输出 对于数组而言,一般都会使用for循环进行输出,但是在使用传统for循环的时候往往采用下标的形式进行数组元素的访问. 但是在jdk1.5之后为了减轻下标对数组的影响(如果数组下标 ...

  4. linux 系统 grep 命令 摘录过滤特定的行

    1.grep ‘xxx’ filename  enter   其中xxx为要搜索的字符串 ,即可检索到含有 xxx的行. 2.grep 'xxx' filename  >newfilename ...

  5. ZOJ 1002 Fire Net(dfs)

    嗯... 题目链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827364501 这道题是想出来则是一道很简单的dfs: 将一 ...

  6. CSS-复选框默认样式修改

    在css文件中添加如下代码 input[type='checkbox'] { -webkit-appearance: none; background: #fff url('../../static/ ...

  7. php 算false的情况

    四.PHP中算false的情况 1.Boolan false 2.整形 0 3.浮点型 0.0 4.字符串"" "0" ("0.0" &qu ...

  8. C语言笔记 11_头文件&强制类型转换&错误处理&递归

    头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处理指 ...

  9. Jenkins显示语言切换为中文(最终解决办法)

    网上大部分搜索结果都指向同一种方法就是下载Locale插件,但该方法已失效. 新的解决办法: 下载完成之后重启Jenkins生效,会汉化大部分内容,部分设置不会汉化. 注:重启后不生效请检查 1.已安 ...

  10. ZooKeeper技术总结

    因为之前学习并使用了Kafka,所以专门查看了有关zookeeper相关的资料,看了大量的博客及官网资料,也因为有些地方理解不清楚向认识的专业人士进行了咨询,这里对这段时间的学习进行总结. ZooKe ...