题目描述

X星球的一处迷宫游乐场建在某个小山坡上。
它是由10x10相互连通的小房间组成的。
房间的地板上写着一个很大的字母。
我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,
R表示走到右边的房间,
U表示走到上坡方向的房间,
D表示走到下坡方向的房间。

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

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

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

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


分析与思考

第一眼看上去以为是搜索, 读完题发现是一道暴力枚举题

思路:
先思考一下,若迷宫规模为n,则某点在迷宫中最多只能走 n*n步(蛇形), 因此, 在对每个点遍历时,可以用num记录步数,当num超过n*n+5后,表明这条路没办法走出去, 反之,如果在遍历期间ij越界,则说明可以走出去。 最后统计总数即可。

改进:

  1. 可以设置一个与迷宫规模等大的二维int数组, 全部置0, 如果某点能走通, 则置1, 这样,在遍历每个点前,先判断对应的int数组是否等于1, 若等于1, 则直接结束此次循环, 会大大提高效率。
  2. 使用define定义数组的规模, 可以在测试时方便的调节数组大小。

代码展示

#include<bits/stdc++.h>
#define N 10
using namespace std;
char a[N][N];           //记录迷宫
int b[N][N];            //如果该点可以走通,则置1。
int main() {for(int i = 0; i < N; i++)  cin>>a[i];  //输入迷宫memset(b, 0, sizeof(b));int sum1 = 0;        //记录能走出去的次数 for(int i = 0; i < N; i++)    //遍历 for(int j = 0; j < N; j++) {int sum = 0;int i1=i, j1=j;       //代替i,j进行值的变化 while(sum < N*N+10) {   if(b[i1][j1]==1) break;  //如果走到的这个点 b[i][j]=1,则代表能走出去 sum++;if(a[i1][j1] == 'U') i1--;else if(a[i1][j1] == 'D') i1++;else if(a[i1][j1] == 'L') j1--;else if(a[i1][j1] == 'R') j1++;if(i1<0 || i1>=N || j1<0 || j1>=N)  break;}if(sum != N*N+10) { sum1++; b[i][j]=1; }  //如果sum遍历到头,则说明走不出去 }cout << sum1 << endl;
return 0; }

这世界就是,一些人总在昼夜不停的努力,而另外一些人,起床就发现世界已经变了。 加油,陌生人!

27行代码AC_迷宫 2017年第八届蓝桥杯A组第一题(暴力、仿迷宫)相关推荐

  1. 2017年第八届蓝桥杯JavaB组省赛 刷题笔记、思路及答案

    前言 本人是二本院校大二的计算机系学生,已经报名了下一届的蓝桥杯省赛,整个寒假在家(这次的寒假挺久的哈哈)在b站学习了一些算法(现在会bfs走迷宫.dfs相关算法.递归回溯.常见排列算法),但是还是有 ...

  2. 16行代码AC_【第十届蓝桥杯省赛c/c++B组真题解析】7.完全二叉树的权值

    励志用更少的代码做更高效的表达 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下.从左到右的顺序依次是 A1, A2, · · · AN,如下图所示 现在小明要把相同深度的 ...

  3. 2017年第八届蓝桥杯 JavaB组国赛 第五题 填字母游戏

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

  4. 2019蓝桥杯Java决赛题答案_2019-01-15 第八届蓝桥杯javaB组第二题

    题目: 标题:纸牌三角形 A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算).要求每个边的和相等. 下图就是一种排法(如有对齐问题,参看p1.png). A 9 6 4 8 ...

  5. 【2023蓝桥杯】2017年第八届C/C++A组真题(解析笔记)

    目录 T1:迷宫 - 暴力dfs+标注  T2:跳蚱蜢 - 9数算式 全排列 + 枚举乘号位置 T3:魔方状态 - 模拟 + 判重 (高手入*****) T4:方格分割 - dfs + 从中心点去切割 ...

  6. 2017年 第八届蓝桥杯 Java B组真题整理

    2017年 第八届蓝桥杯 Java B组真题整理 1.购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.这不,XX大促销又 ...

  7. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - C. 魔方状态

    2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - C. 魔方状态 魔方状态 二阶魔方就是只有2层的魔方,只由8个小块组成. 小明很淘气,他只喜欢3种颜色,所有把家里的二阶魔方重新涂了颜色, ...

  8. 2017年第八届蓝桥杯省赛B组 C/C++

    2017.4.8,第八届蓝桥杯初赛,时隔一月多,才写个题解,贼尴尬...这学期竞赛多,PAT,天梯赛初决赛,蓝桥杯初决赛,ACM省赛,加上课程也多,真是累成狗了,蓝桥初赛后就一直学习课程,和小伙伴一起 ...

  9. 2017年第八届蓝桥杯省赛题目python解答(更新中)

    目录 1. 迷宫 2. 跳蚱蜢 3. 魔方状态 4. 方格分割 5. 正则表达式 6. 包子凑数 ·· 1. 迷宫 思路:使用暴力的方法来求解,对于每一个玩家,计算他能否走出去.对于一些走不出去的玩家 ...

最新文章

  1. python下py2exe打包笔记
  2. 程序员的快速开发框架:Github上 10 大优秀的开源后台控制面板
  3. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )
  4. win10安装jboss7_win7系统上jboss6 设置https访问
  5. java通用解析excel_java读取简单excel通用工具类
  6. [北京微软技术直通车]前端 Visual Studio Code 开发 Angular 与亿级 SQL Servern
  7. 「软件项目管理」软件项目范围计划——需求管理与任务分解
  8. 少儿编程100讲轻松学python(二)-python cv2模块怎么安装
  9. 什么是事务、事务特性、事务隔离级别、spring事务传播特性
  10. python 进程池
  11. 浏览器管理oracle网址,浏览器用户界面 (Browser User Interface, BUI)
  12. 学习是一件高尚而孤独的事情
  13. oracle报错12516,Oracle连接数太多报错-ORA-12516异常
  14. WPS添加带背景颜色的文本框
  15. Dreamweaver构建Blog全程实录
  16. Unity3d小球碰到墙壁之后反弹
  17. Robot Framework RIDE工具闪退处理
  18. python笔迹识别_CVPR 2019笔迹识别论文:逆鉴别网络+八路Attention
  19. 【蓝桥杯集训100题】scratch勾股数 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第20题
  20. 仿站小工具下载目标网站

热门文章

  1. 一文搞懂JAVA与GO垃圾回收
  2. Redis性能指标监控
  3. AV1,实时编码READY
  4. LiveVideoStack音视频技术2018年度评奖揭晓
  5. H.264专利费不受FRAND限制 Android设备商受影响
  6. 动态优化器—一种感知视频编码优化框架
  7. C/C++学习之路: 多态
  8. 腾讯技术直播间 | 走进小程序云开发
  9. Dragonboard 410c fastboot刷入android
  10. 解决gradle下载慢的问题