Java实现第八届蓝桥杯迷宫

迷宫

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

房间的地板上写着一个很大的字母。
我们假设玩家是面朝上坡的方向站立,则:
L表示走到左边的房间,
R表示走到右边的房间,
U表示走到上坡方向的房间,
D表示走到下坡方向的房间。

X星球的居民有点懒,不愿意费力思考。
他们更喜欢玩运气类的游戏。这个游戏也是如此!

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

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

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

请提交该整数,表示走出迷宫的玩家数目,不要填写任何多余的内容。

如果你还没明白游戏规则,可以参看一个简化的4x4迷宫的解说图:p1.png

在这里插入图片描述

public class Main
{
    static char[][] a = new char[10][10];
    static boolean[][] b = new boolean[10][10];
    static int cnt = 0;
    public static void main(String[] args) {
        String str="UDDLUULRULUURLLLRRRURRUURLDLRDRUDDDDUUUUURUDLLRRUUDURLRLDLRLULLURLLRDURDLULLRDDDUUDDUDUDLLULRDLUURRR";  
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                a[i][j] = str.charAt(i*10+j);
            }
        }

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                int x = i;
                int y = j;
                init();
                while (true) {
                    if (x < 0 || x > 9 || y < 0 || y > 9) {
                        cnt++;
                        break;
                    }
                    if  (b[x][y] == true) {
                        break;
                    }
                    b[x][y] = true;
                    switch (a[x][y]) {
                    case 'U':
                        x -= 1;
                        break;
                    case 'D':
                        x += 1;
                        break;
                    case 'L':
                        y -= 1;
                        break;
                    case 'R':
                        y += 1;
                        break;
                    default:
                        break;
                    }
                }
            }
        }
        System.out.println(cnt);
    }
    private static void init() {
        // TODO Auto-generated method stub
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                b[i][j] = false;
            }
        }
    }
}
posted @ 2019-07-29 12:46  南墙1  阅读(20)  评论(0编辑  收藏  举报