版权声明:转载请注明出处 https://blog.csdn.net/xuyangxinlei/article/details/79630578
标题:迷宫
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{
2. static int ok = 0,res = 0;
3. static char road[][] = new char[][]{{'U','D','D','L','U','U','L','R','U','L'},
4. {'U','U','R','L','L','L','R','R','R','U'},
5. {'R','R','U','U','R','L','D','L','R','D'},
6. {'R','U','D','D','D','D','U','U','U','U'},
7. {'U','R','U','D','L','L','R','R','U','U'},
8. {'D','U','R','L','R','L','D','L','R','L'},
9. {'U','L','L','U','R','L','L','R','D','U'},
10. {'R','D','L','U','L','L','R','D','D','D'},
11. {'U','U','D','D','U','D','U','D','L','L'},
12. {'U','L','R','D','L','U','U','R','R','R'}};
13. static int cover[][] = new int[10][10];
14. public static void main(String[] args) {
15. // TODO Auto-generated method stub
16. for(int i=0;i<10;i++){
17. for(int k=0;k<10;k++){
18. ok = 0;
19. cover = new int[10][10];
20. dfs(i,k);
21. if(ok==1){
22. res++;
23. //System.out.println(i+","+k); 输出能走出迷宫的人的坐标,方便检查结果
24. }
25. }
26. }
27. System.out.println(res);
28. }
29. static void dfs(int x,int y){
30. if(x==-1||x==10||y==-1||y==10){
31. ok = 1;
32. return;
33. }
34. if(cover[x][y]==1) return;
35. cover[x][y] = 1;
36. if(road[x][y]=='U'){
37. dfs(x-1,y);
38. }
39. else if(road[x][y]=='D'){
40. dfs(x+1,y);
41. }
42. else if(road[x][y]=='L'){
43. dfs(x,y-1);
44. }
45. else if(road[x][y]=='R'){
46. dfs(x,y+1);
47. }
48. }
49.}