迷宫(2017省赛填空)
Posted 卷王之王1.0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迷宫(2017省赛填空)相关的知识,希望对你有一定的参考价值。
X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间,R表示走到右边的房间,U表示走到上坡方向的房间,D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。
迷宫地图如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
请你计算一下,最后,有多少玩家会走出迷宫? 而不是在里边兜圈子。
方法一:
#include<iostream>
using namespace std;
int main()
int count = 0;
string A[10]="UDDLUULRUL","UURLLLRRRU","RRUURLDLRD"
,"RUDDDDUUUU","URUDLLRRUU","DURLRLDLRL","ULLURLLRDU"
,"RDLULLRDDD","UUDDUDUDLL","ULRDLUURRR";//迷宫地图
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
int x = i;
int y = j;
char a = A[i][j];
char b = a; //b用来记录上次位置
while (true)
//如果U上一个为D,则陷入循环状态,则不能走出迷宫
if (a == 'U')
if (b == 'D') break;
x--;
if (a == 'D')
if (b == 'U') break;
x++;
if (a == 'L')
if (b == 'R') break;
y--;
if (a == 'R')
if (b == 'L') break;
y++;
if (x < 0 || x>9 || y < 0 || y>9) //走出迷宫
count++;
break;
b = a;
a = A[x][y]; //通过上面判断x,y值发生变化重新赋值
cout << count;
return 0;
运行结果:
方法二:直接数
以上是关于迷宫(2017省赛填空)的主要内容,如果未能解决你的问题,请参考以下文章