标题:迷宫
X星球的一处迷宫游乐场建在某个小山坡上。
它是由10x10相互连通的小房间组成的。
房间的地板上写着一个很大的字母。
我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,
R表示走到右边的房间,
U表示走到上坡方向的房间,
D表示走到下坡方向的房间。
X星球的居民有点懒,不愿意费力思考。
他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把100名玩家放入一个个小房间内。
玩家一定要按照地上的字母移动。
迷宫地图如下:
------------
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
而不是在里边兜圈子。
请提交该整数,表示走出迷宫的玩家数目,不要填写任何多余的内容。
X星球的一处迷宫游乐场建在某个小山坡上。
它是由10x10相互连通的小房间组成的。
房间的地板上写着一个很大的字母。
我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,
R表示走到右边的房间,
U表示走到上坡方向的房间,
D表示走到下坡方向的房间。
X星球的居民有点懒,不愿意费力思考。
他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把100名玩家放入一个个小房间内。
玩家一定要按照地上的字母移动。
迷宫地图如下:
------------
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
------------
请你计算一下,最后,有多少玩家会走出迷宫?而不是在里边兜圈子。
请提交该整数,表示走出迷宫的玩家数目,不要填写任何多余的内容。
如果你还没明白游戏规则,可以参看一个简化的4x4迷宫的解说图:
此题为第一题,填空题只需要算出结果即可,难度较低。
遍历每一个人的坐标,让其一直吵着箭头方向行走,走过的房间标记为cover[x][y]=1,
直到走出去或是绕圈圈(再次遇到cover[x][y]=1的房间)。
代码如下:
public class Main{
static int ok = 0,res = 0;
static char road[][] = new char[][]{{'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'}};
static int cover[][] = new int[10][10];
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<10;i++){
for(int k=0;k<10;k++){
ok = 0;
cover = new int[10][10];
dfs(i,k);
if(ok==1){
res++;
//System.out.println(i+","+k); 输出能走出迷宫的人的坐标,方便检查结果
}
}
}
System.out.println(res);
}
static void dfs(int x,int y){
if(x==-1||x==10||y==-1||y==10){
ok = 1;
return;
}
if(cover[x][y]==1) return;
cover[x][y] = 1;
if(road[x][y]=='U'){
dfs(x-1,y);
}
else if(road[x][y]=='D'){
dfs(x+1,y);
}
else if(road[x][y]=='L'){
dfs(x,y-1);
}
else if(road[x][y]=='R'){
dfs(x,y+1);
}
}
}