• 2017年蓝桥杯省赛A组c++第1题(走迷宫)


    /*
    标题:迷宫
    
    X星球的一处迷宫游乐场建在某个小山坡上。
    它是由10x10相互连通的小房间组成的。
    
    房间的地板上写着一个很大的字母。
    我们假设玩家是面朝上坡的方向站立,则:
    L表示走到左边的房间,
    R表示走到右边的房间,
    U表示走到上坡方向的房间,
    D表示走到下坡方向的房间。
    
    X星球的居民有点懒,不愿意费力思考。
    他们更喜欢玩运气类的游戏。这个游戏也是如此!
    
    开始的时候,直升机把100名玩家放入一个个小房间内。
    玩家一定要按照地上的字母移动。
    
    迷宫地图如下:
    ------------
    UDDLUULRUL
    UURLLLRRRU
    RRUURLDLRD
    RUDDDDUUUU
    URUDLLRRUU
    DURLRLDLRL
    ULLURLLRDU
    RDLULLRDDD
    UUDDUDUDLL
    ULRDLUURRR
    ------------
    
    请你计算一下,最后,有多少玩家会走出迷宫? 
    而不是在里边兜圈子。
    */
    
    #include<cstdio>  
    #include<cstring>  
    #include<algorithm>  
    #include<iostream>  
    #include<string>  
    #include<vector>  
    #include<stack>  
    #include<bitset>  
    #include<cstdlib>  
    #include<cmath>  
    #include<set>  
    #include<list>  
    #include<deque>  
    #include<map>  
    #include<queue>  
    using namespace std;
    
    char mp[11][11] = { "UDDLUULRUL",
                        "UURLLLRRRU",
                        "RRUURLDLRD",
                        "RUDDDDUUUU",
                        "URUDLLRRUU",
                        "DURLRLDLRL",
                        "ULLURLLRDU",
                        "RDLULLRDDD",
                        "UUDDUDUDLL",
                        "ULRDLUURRR" };
    int sum=0;
    
    bool going(int a,int b)
    {
        int steps=0;
        while(a>=0&&a<=9&&b>=0&&b<=9)
        {
            if(steps>20)    return false;//如果在20步以内没有走出去则说明陷入死循环,永远不可能出去了。 
            switch(mp[a][b])
            {
                case 'L':
                    b--;steps++;
                    break;
                case 'R':
                    b++;steps++;
                    break;
                case 'U':
                    a--;steps++;
                    break;
                case 'D':
                    a++;steps++;
                    break;
            }
        }
        return true;
    }
    
    int main()
    {
        for(int i=0;i<10;i++)
            for(int j=0;j<10;j++)
            {
                if(going(i,j))    sum++;
            }
        cout<<sum<<endl;
    }  

    tz@COI HZAU

    2018/3/16

  • 相关阅读:
    Cobbler-自动化部署神器
    ssh,公钥和私钥,远程复制
    VIM文本替换命令
    #!/usr/bin/env bash和#!/usr/bin/bash的比较
    [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解
    mount命令中offset参数的意义
    ironic+nova详解
    【ironic】ironic介绍与原理
    在进行商业运算时解决BigDecimal的精度丢失问题
    后台商品搜索功能开发SQL
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/8585050.html
Copyright © 2020-2023  润新知