标题:迷宫
X星球的一处迷宫游乐场建在某个小山坡上。
它是由10x10相互连通的小房间组成的。
房间的地板上写着一个很大的字母。
我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,
R表示走到右边的房间,
U表示走到上坡方向的房间,
D表示走到下坡方向的房间。
X星球的居民有点懒,不愿意费力思考。
他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把100名玩家放入一个个小房间内。
玩家一定要按照地上的字母移动。
迷宫地图如下:
------------
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
------------
请你计算一下,最后,有多少玩家会走出迷宫?
而不是在里边兜圈子。
请提交该整数,表示走出迷宫的玩家数目,不要填写任何多余的内容。
如果你还没明白游戏规则,可以参看一个简化的4x4迷宫的解说图:
示例代码:
public class Main {
public static char map[][] = {
{'U', 'D', 'D', 'L', 'U', 'U', 'L', 'R', 'U', 'L'},
{'U', 'U', 'R', 'L', 'L', 'L', 'R', 'R', 'R', 'U'},
{'R', 'R', 'U', 'U', 'R', 'L', 'D', 'L', 'R', 'D'},
{'R', 'U', 'D', 'D', 'D', 'D', 'U', 'U', 'U', 'U'},
{'U', 'R', 'U', 'D', 'L', 'L', 'R', 'R', 'U', 'U'},
{'D', 'U', 'R', 'L', 'R', 'L', 'D', 'L', 'R', 'L'},
{'U', 'L', 'L', 'U', 'R', 'L', 'L', 'R', 'D', 'U'},
{'R', 'D', 'L', 'U', 'L', 'L', 'R', 'D', 'D', 'D'},
{'U', 'U', 'D', 'D', 'U', 'D', 'U', 'D', 'L', 'L'},
{'U', 'L', 'R', 'D', 'L', 'U', 'U', 'R', 'R', 'R'}
};
public static int count = 0;
public static void main(String[] args) {
for (int a = 0; a < 10; a++) {
for (int b = 0; b < 10; b++) {
int i=a;
int j=b;
int[][] tempmap = new int[10][10];//路径地图
for(int m=0;m<10;m++){
for(int n=0;n<10;n++){
tempmap[m][n]=0;
}
}
while (true) {
char c = map[i][j];
if ((c == 'U' && i == 0) || (c == 'D' && i == 9) || (c == 'L' && j == 0) || (c == 'R' && j == 9)) {//到达出口
count++;
break;
} else if (c == 'U' && i != 0) {
i -= 1;
if (tempmap[i][j] ==1) break;
tempmap[i][j] =1;
continue;
} else if (c == 'D' && i != 9) {
i += 1;
if (tempmap[i][j] == 1) break;
tempmap[i][j] = 1;
continue;
} else if (c == 'L' && j != 0) {
j -= 1;
if (tempmap[i][j] ==1) break;
tempmap[i][j] =1;
continue;
} else if (c == 'R' && j != 9) {
j += 1;
if (tempmap[i][j] ==1) break;
tempmap[i][j] = 1;
continue;
}
}
}
}
System.out.println(count);
}
}