美文网首页
第八届蓝桥杯 迷宫 Java A组

第八届蓝桥杯 迷宫 Java A组

作者: elijahzheng | 来源:发表于2018-04-02 16:41 被阅读0次

标题:迷宫

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

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

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

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

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR


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

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

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


迷宫

思路

深度搜索 ,跟着箭头的字母方向寻找,直到走出数组下标为-1 |10 | 重复自身位置为止。

代码


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[]) {
        for (int i=0; i<10; i++) {
            for (int j = 0;j <10; j++) {
                cover = new int[10][10];
                ok = 0;
                dfs(i,j);
                if (ok == 1) {
                    res ++;
                }
            }
        }
        
        System.out.println(res);
    }
    
    static void dfs(int i, int j) {
        if (i == -1 | i == 10 | j == -1 | j == 10) {
            ok = 1;
            return;
        }
        if (cover[i][j] == 1) return;
        cover[i][j] = 1;
        if (road[i][j] == 'U') {
            dfs(i -1, j);
        }
        
        if (road[i][j] == 'D') {
            dfs(i + 1, j);
        }
        
        if (road[i][j] == 'L') {
            dfs(i, j - 1);
        }
        
        if (road[i][j] == 'R') {
            dfs(i , j + 1);
        }
    }
}

相关文章

  • 第八届蓝桥杯 迷宫 Java A组

    标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。 房间的地板上写着一个...

  • 蓝桥杯-迷宫

    标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。房间的地板上写着一个很...

  • 蓝桥杯 迷宫

    标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上。它是由10x10相互连通的小房间组成的。 房间的地板上写着一个...

  • k倍区间

    第八届蓝桥杯省赛Java B组第十题 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序...

  • 分巧克力

    第八届蓝桥杯省赛Java B组第九题儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一...

  • 包子凑数

    第八届蓝桥杯省赛Java B组第八题 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i...

  • 第八届蓝桥杯 字母组串 Java A组

    标题:字母组串 由 A,B,C 这3个字母就可以组成许多串。比如:"A","AB","ABC","ABA","AA...

  • 第八届蓝桥杯 正则问题 Java A组

    描述:正则问题 考虑一种简单的正则表达式:只由 x ( ) | 组成的正则表达式。小明想求出这个正则表达式能接受的...

  • 第八届蓝桥杯 9数算式 Java A组

    标题:9数算式 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1...

  • java蓝桥杯

    核桃的数量小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据...

网友评论

      本文标题:第八届蓝桥杯 迷宫 Java A组

      本文链接:https://www.haomeiwen.com/subject/qtsxhftx.html