蓝桥杯-迷宫
发布日期:2022-02-08 04:20:47 浏览次数:3 分类:技术文章

本文共 3210 字,大约阅读时间需要 10 分钟。

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

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

#include 
#include
using namespace std;int vis[20][20];char mmap[20][20];int countt = 0;int find_(int i, int j){ while(1){ if(i < 0 || i > 9 || j < 0 || j > 9 ){ countt++; break; } if(vis[i][j]) { break; } vis[i][j] = 1;//判断当前位置是否有人存在,,当移动之后, 这个位置还是有人说在,说明不能走出去 switch(mmap[i][j]){ case 'U': i--;break; case 'L': j--;break; case 'R': j++;break; case 'D': i++;break; default: break; } } return 0;}int main(){ freopen("A.txt", "r", stdin); for(int i = 0; i <10; i++){ for(int j = 0; j < 10; j++){ cin >> mmap[i][j]; } } for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ memset(vis, 0, sizeof(vis)); find_(i, j); } } cout << countt << endl;}

广度优先搜索实现--参考

#include 
#include
#include
using namespace std;#define fi first#define se second#define pr make_pairtypedef pair
pii;const int MAX_N = 1e1 + 5; // 对题目中出现的数据范围,可以用这种方法表示,避免重复使用时出错 // XeY 表示X * 10 ^ Y 也就是X乘以10的Y次方 // +5 是为了防止数据溢出而额外开的空间const int d[5][3] = {
{1, 0}, {0, 1}, {-1, 0}, {0, -1}};const char able[5] = "ULDR"; // 确定常量,方便书写bool exitable[MAX_N][MAX_N];char mp[MAX_N][MAX_N];queue
que;int main() { int ans = 0; for (int i = 0; i < 10; i++) { scanf("%s", mp[i]); } for (int j = 0; j < 10; j++) { if (!exitable[0][j] && mp[0][j] == 'U') { que.push(pr(0, j)); exitable[0][j] = true; } if (!exitable[9][j] && mp[9][j] == 'D') { que.push(pr(9, j)); exitable[9][j] = true; } if (!exitable[j][0] && mp[j][0] == 'L') { que.push(pr(j, 0)); exitable[j][0] = true; } if (!exitable[j][9] && mp[j][9] == 'R') { que.push(pr(j, 9)); exitable[j][9] = true; } } // 下面的这种写法被称之为广度优先搜索 while (!que.empty()) { ans++; int x = que.front().fi, y = que.front().se; que.pop(); for (int i = 0; i < 4; i++) { int tx = x + d[i][0], ty = y + d[i][1]; if (tx < 0 || tx > 9) continue; if (ty < 0 || ty > 9) continue; if (exitable[tx][ty]) continue; if (mp[tx][ty] == able[i]) { exitable[tx][ty] = true; que.push(pr(tx, ty)); } } } printf("\nans = %d\n\n", ans); // 检验结果正确性 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (exitable[i][j]) printf("%c", mp[i][j]); else printf("*"); } printf("\n"); } return 0;}

转载地址:https://blog.csdn.net/weixin_38960774/article/details/79408339 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:树状数组题
下一篇:素数+快速幂

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月13日 20时58分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

php手机版页,phpcms手机内容页面添加上一篇和下一篇 2019-04-21
DZ php升级,php升级记录 - shawnplaying的个人页面 - OSCHINA - 中文开源技术交流社区... 2019-04-21
php高并发锁,PHP+MySQL高并发加锁事务处理问题解决方法 2019-04-21
php扩展文件下载,php::使用ZipArchive扩展压缩文件并下载demo 2019-04-21
iis7 php 不显示验证码,thinkphp验证码显示不出来的解决方法 2019-04-21
Apache怎么出现php测试页面,测试 Apache Web 和 PHP 应用程序服务器_php 2019-04-21
php 及时输出,PHP缓冲区强制及时输出 2019-04-21
matlab多重分形广义函数谱,多重广义分形维数计算 - 程序语言 - Delphi&Pascal - 小木虫论坛-学术科研互动平台... 2019-04-21
php如何捕捉异常并抛出去,php抛出异常与捕捉特定类型的异常详解 2019-04-21
php 缓冲区溢出漏洞,在Linux 容器中对php-fpm缓冲区溢出漏洞的复现分析 ( CVE-2019-11043 )... 2019-04-21
acm php如何用,欧拉回路的使用&&http://acm.hdu.edu.cn/showproblem.php?pid=3018 2019-04-21
oracle获取表注释,Oracle获取表名,表注释,字段注释 2019-04-21
oracle library命中率,oracle命中率查询 2019-04-21
oracle合并sql,Oracle SQL-使用合并功能 2019-04-21
linux文件大小 按兆,du命令 实现Linux 某个文件夹下的文件按大小排序 2019-04-21
linux7.4查看系统版本,Centos 7 查看系统版本信息 2019-04-21
linux程序打印cr3寄存器,CR0,CR3寄存器 2019-04-21
linux mkfs 分区,linux mkfs命令详解:格式化分区(为分区写入文件系统) 2019-04-21
linux 网卡管理,Linux 网卡高级管理 2019-04-21
linux 的fork函数原型,【操作系统】关于fork() 2019-04-21