第八届蓝桥杯_省赛_2017_迷宫(A)-c/c++

题目描述(31)
X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10×10 相互连通的小房间组成的。

房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:

  • L 表示走到左边的房间,
  • R 表示走到右边的房间,
  • U 表示走到上坡方向的房间,
  • D 表示走到下坡方向的房间。
    X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!

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

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

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

如果你还没明白游戏规则,可以参看下面一个简化的 4x4 迷宫的解说图:
第八届蓝桥杯_省赛_2017_迷宫(A)-c/c++_第1张图片运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

思路
假如某点可以走出迷宫,则该点走出迷宫的步数一定小于100。因此,我们依次遍历每个点,判断走100步之后的是否在界限内,如果在,则走不出迷宫;如果不在则走出迷宫。
代码

#include
int main(){
	char a[10][11]={"UDDLUULRUL",
					"UURLLLRRRU",
					"RRUURLDLRD",
					"RUDDDDUUUU",
					"URUDLLRRUU",
					"DURLRLDLRL",
					"ULLURLLRDU",
					"RDLULLRDDD",
					"UUDDUDUDLL",
					"ULRDLUURRR"};
	int k=0;
	int m,n;
	int sum=0;
	for(int i=0; i<10; i++){
		for(int j=0; j<10; j++){
			m = i;
			n = j;
			while(k < 100){
				if(a[m][n] == 'U') m--;
				else if(a[m][n] == 'D') m++;
				else if(a[m][n] == 'L') n--;
				else if(a[m][n] == 'R') n++;
				if(m<0 || m>9 || n<0 || n>9){
					sum++;
					break;
				}
				k++;
			}
			k = 0;
		}
	}
	printf("%d",sum);		
	return 0;
}

你可能感兴趣的:(蓝桥杯,c语言,c++)