LQ0085 迷宫枚举+模拟
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0085 迷宫枚举+模拟相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2017初赛 C++ A组A题
题目描述
X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。
房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。
X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把100名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。
迷宫地图如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
请你计算一下,最后,有多少玩家会走出迷宫? 而不是在里边兜圈子。
输出格式
输出一个整数表示答案
数据范围与提示
为方便理解,可参考此图
问题分析
对于迷宫的每个店,按照题意要求都走一下即可。
程序运行结果是31。
AC的C语言程序如下:
/* LQ0085 迷宫 */
#include <stdio.h>
char g[][11] =
"UDDLUULRUL",
"UURLLLRRRU",
"RRUURLDLRD",
"RUDDDDUUUU",
"URUDLLRRUU",
"DURLRLDLRL",
"ULLURLLRDU",
"RDLULLRDDD",
"UUDDUDUDLL",
"ULRDLUURRR"
;
int main()
int cnt = 0;
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
int x = i, y = j;
char cur = g[i][j], last = cur;
for ( ; ; )
if (cur == 'U')
if (last == 'D') break;
x--;
else if (cur == 'R')
if (last == 'L') break;
y++;
else if (cur == 'L')
if (last == 'R') break;
y--;
else if (cur == 'D')
if (last == 'U') break;
x++;
if (x < 0 || x > 9 || y < 0 || y > 9)
cnt++;
break;
last = cur;
cur = g[x][y];
printf("%d\\n", cnt);
return 0;
以上是关于LQ0085 迷宫枚举+模拟的主要内容,如果未能解决你的问题,请参考以下文章