蓝桥杯练习2:迷宫

标题:迷宫

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);
    }
}

发布了58 篇原创文章 · 获赞 75 · 访问量 6663

猜你喜欢

转载自blog.csdn.net/qq_42013035/article/details/103505770