题目:迷宫
X星球的一处迷宫游乐场建在某个小山坡上。
它是由10x10相互连通的小房间组成的。

房间的地板上写着一个很大的字母。
我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,
R表示走到右边的房间,
U表示走到上坡方向的房间,
D表示走到下坡方向的房间。

X星球的居民有点懒,不愿意费力思考。
他们更喜欢玩运气类的游戏。这个游戏也是如此!

开始的时候,直升机把100名玩家放入一个个小房间内。
玩家一定要按照地上的字母移动。

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

请你计算一下,最后,有多少玩家会走出迷宫?
而不是在里边兜圈子。

请提交该整数,表示走出迷宫的玩家数目,不要填写任何多余的内容。

如果你还没明白游戏规则,可以参看一个简化的4x4迷宫的解说图:

解题思路为暴力深度搜索,对每个房间的玩家进行逐个验证。解题关键在于想通在迷宫内和在迷宫外这两种状态怎么用代码表达。
以下是解题代码。
(提醒:本代码添加了计时语句,不在题意要求内,如不需要可删去)

#include<iostream>
#include<string>
#include<time.h>
using namespace std;string data[10];//存储迷宫数据
int ans;//统计走出迷宫人数
int vis[10][10];//标记矩阵,记录走过的房间,0表示未走过,1表示走过bool solve(int i,int j)//返回true说明这个房间的玩家可以走出迷宫
{//走到一个房间首先做的判断if(i<0||i>9||j<0||j>9)//走出迷宫的条件转化为程序语句return true;if(vis[i][j]==1)//回到走过的房间,即是意味着进入死循环,所以可直接判断走不出来return false;//以上两个条件都不满足,说明正在探索过程,且是新的房间,故首先进行标记vis[i][j]=1;switch (data[i][j])//判断该往哪个方向走{case 'U':return solve(i-1,j);//因为会return,直接退出函数,所以可以不加breakcase 'D':return solve(i+1,j);case 'L':return solve(i,j-1);case 'R':return solve(i,j+1);}
}void reset(int (*a)[10],int n,int m)//重置标记矩阵vis以进行下一轮计算
{for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(a[i][j])a[i][j]=0;
}int main()
{clock_t start, finish;double totaltime;start = clock();data[0]="UDDLUULRUL";//存储迷宫数据data[1]="UURLLLRRRU";data[2]="RRUURLDLRD";data[3]="RUDDDDUUUU";data[4]="URUDLLRRUU";data[5]="DURLRLDLRL";data[6]="ULLURLLRDU";data[7]="RDLULLRDDD";data[8]="UUDDUDUDLL";data[9]="ULRDLUURRR";for(int i=0;i<10;i++)for(int j=0;j<10;j++){reset(vis,10,10);//计算前先清零标记矩阵if(solve(i,j))//开始计算ans++;}cout<<ans<<endl;//输出答案finish=clock();totaltime=(double)(finish-start)*1000/CLOCKS_PER_SEC;cout << "The runtime is " << totaltime << "ms." << endl;return 0;
}

答案为31。程序运行结果如下:
在VS2019运行。
在VSCode运行。
针对本代码运行可能出现的问题,在此给出3个链接:
1.如果显示time源文件无法打开
添加链接描述
2.如果显示CLOCKS_PER_SEC未定义
添加链接描述
3.如果显示全局变量data不明确
添加链接描述

蓝桥杯2017省赛C/C++A组题1迷宫题解(深搜dfs)相关推荐

  1. 第九届蓝桥杯(省赛)C++C组真题题解

    文章目录 题目链接 C组真题(剩余题目同B组真题相同,已给出B组真题题目链接) 题目结构 第一题 哪天返回 第二题 猴子分香蕉 第五题 书号验证 第六题 稍小分数 第七题 次数差 第八题 等腰三角形 ...

  2. 蓝桥杯2017年第八届C/C++ B组省赛习题题解

    目录 第一题:购物单(暴力计算) 第二题:等差素数数列(数学+暴力枚举) 第三题:承压计算(模拟) 第四题:方格分割(dfs) 第五题:取数位(模拟) 第六题:最大公共子串(dp) 第七题:日期问题( ...

  3. 蓝桥杯2017国赛 瓷砖样式 dfs+map

    标题:磁砖样式小明家的一面装饰墙原来是 3*10 的小方格.现在手头有一批刚好能盖住2个小方格的长方形瓷砖.瓷砖只有两种颜色:黄色和橙色.小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来.小 ...

  4. 蓝桥杯 2017 国赛B组C/C++【对局匹配】

    题意就是给我们一串数  让我们尽可能地取 约束条件是a[i] 和a[i]+k不能同时出现 所有元素之间相差k的元素都不能同时出现  让我们求所能取到的最大的数的和是多少 分析: dp思路,这个和树形d ...

  5. 蓝桥杯2017国赛 瓷砖样式 dfs+hush

    小明家的一面装饰墙原来是 3*10 的小方格. 现在手头有一批刚好能盖住2个小方格的长方形瓷砖. 瓷砖只有两种颜色:黄色和橙色. 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来. 小明有个 ...

  6. c语言填字母游戏蓝桥杯,蓝桥杯2017国赛JAVAB组 填字母游戏 题解

    标题:填字母游戏 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格 ...

  7. 蓝桥杯2017省赛——外星日历(Java)

    问题描述: 某星系深处发现了文明遗迹. 他们的计数也是用十进制. 他们的文明也有日历.日历只有天数,没有年.月的概念. 有趣的是,他们也使用了类似"星期"的概念, 只不过他们的一个 ...

  8. 蓝桥杯2017模拟赛-算年龄

    标题:算年龄 英国数学家德摩根出生于19世纪初叶(即18xx年). 他年少时便很有才华.一次有人问他的年龄,他回答说: "到了x的平方那年,我刚好是x岁". 请你计算一下,德摩根到 ...

  9. 蓝桥杯2017模拟赛-风险度量

    标题:风险度量 X星系的的防卫体系包含 n 个空间站.这 n 个空间站间有 m 条通信链路,构成通信网. 两个空间站间可能直接通信,也可能通过其它空间站中转. 对于两个站点x和y (x != y), ...

最新文章

  1. Hey, 看看小程序的page-frame.html把~
  2. Java 8 中 Stream API 的奇技淫巧
  3. 命令2-Create Project Tree
  4. Sql server管理工具SQLManagementStudio2008的安装
  5. Same Sum Blocks
  6. jQuery调用WebService返回JSON数据
  7. java tomcat自动安装教程_Tomcat:基础安装和使用教程
  8. nginx 的 rewrite 模块
  9. 虚拟机下安装MS-DOS
  10. 20160801java学习重点:函数
  11. StyleGAN3 笔记
  12. P5713 【深基3.例5】洛谷团队系统
  13. 汇总|国内外优秀的计算机视觉团队
  14. echarts自定义饼图
  15. (微信定时发送消息)一个java文件,完成可配置的微信定时发送消息任务
  16. perl/tk_在Perl / Tk中使用高级小部件
  17. Spring cloud实现FeignClient指定Zone调用
  18. AI聚变:寻找 2018 优秀人工智能应用案例
  19. 3D视觉之深度相机方案
  20. 西湖大学自然语言处理(七)—— 解决OOV问题的两种平滑技术

热门文章

  1. 【调剂】东北石油大学电气信息工程学院招收控制、电气、通信、计算机等专业调剂研究生...
  2. 【信息学奥赛一本通】1399:病人初筛
  3. Windows 7 和 Windows Server 2008 R2 Service Pack 1下载
  4. 计算机电源在线工作,一般计算机电源都在什么电压范围内公
  5. C#实现smartQQ 扫码登录分析自动收发消息
  6. html中竖向排列,css关于竖向布局的问题
  7. 远程办公之:向日葵X 使用教程
  8. 前端游戏巨制! CSS居然可以做3D游戏了
  9. 如何将excel表格导入word_如何把EXCEL表格形式的通讯录批量导入到手机通讯录中?...
  10. 同步和串行的区别_谈谈SPI (Serial Peripheral Interface,串行外设接口)