zoukankan      html  css  js  c++  java
  • 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;
                }
            }
        }
    }
    
  • 相关阅读:
    宋元
    隋唐
    中国历史上三次大分裂时期
    三国
    PCL点云 no override found for 'vtkActor'.
    PCL 点云欧式聚类
    PCL区域生长分割
    OPENCV 求轮廓方向
    pcl点云的创建、访问与转换
    PCL 圆柱模型和平面模型的分割
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947622.html
Copyright © 2011-2022 走看看