迷宫(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省赛填空)的主要内容,如果未能解决你的问题,请参考以下文章

第十届蓝桥杯省赛B组 做题记录(python)

第十届蓝桥杯省赛B组 做题记录(python)

第八届蓝桥杯(2017年)JavaA组省赛真题解析

门牌制作(2020省赛填空题)

2017年蓝桥杯省赛

NYNU_省赛选拔题