开发者社区> 张起灵-小哥> 正文

蓝桥杯-我们的征途是星辰大海

简介: 蓝桥杯-我们的征途是星辰大海
+关注继续查看

Problem Description:


最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成。

共有四种方格:

‘.’  代表空地,curiosity可以穿过它

‘#’  代表障碍物,不可穿越,不可停留

‘S’  代表curiosity的起始位置

‘T’  代表curiosity的目的地

NASA将会发送一系列的命令给curiosity,格式如下:“LRUD”分别代表向左,向右,向上,向下走一步。由于地球和火星之间最近时也有55000000km!所以我们必须提前判断这一系列的指令会让curiosity最终处在什么样的状态,请编程完成它。


Input:


第一行是一个整数T,代表有几个测试样例

每个测试样例第一行是一个整数N(1< =N< =50))代表迷宫的大小(N*N)。随后的N行每行由N个字符串组成,代表迷宫。接下来的  一行是一个整数Q,代表有多少次询问,接下来的Q行每行是一个仅由“LRUD”四个字母的组成的字符串,字符转长度小于1000.  


Output:


对于每个询问输出单独的一行:

“I  get  there!”:执行给出的命令后curiosity最终到达了终点。

“I  have  no  idea!”:执行给出的命令后curiosity未能到达终点。

“I  am  dizzy!”:curiosity在执行命令的过程中撞到了障碍物。

“I  am  out!”:代表curiosity在执行命令的过程中走出了迷宫的边界。


Sample Input:


2

2

S.

#T

2

RD

DR

3

S.#

.#.

.T#

3

RL

DDD

DDRR  


Sample Output:


I  get  there!

I  am  dizzy!

I  have  no  idea!

I  am  out!

I  get  there!  


解题思路:


这道题类似与DFS和BFS,但是实际上就是模拟,我们只需要按照题意去走,寻找迷宫里的每个点是什么,最终按条件输出即可。(OJ上的样例输入有问题,需要自己输入样例或许才可以)


程序代码:


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m,sx,sy,ex,ey;
        char a[100][100];
        //memset(a,'0',sizeof(a));
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cin>>a[i][j];
                if(a[i][j]=='S')
                {
                    sx=i;
                    sy=j;
                }
                if(a[i][j]=='T')
                {
                    ex=i;
                    ey=j;
                }
            }
        }
        cin>>m;
        while(m--)
        {
            int tx=sx,ty=sy,flag=0;
            string s;
            cin>>s;
            for(int i=0;i<s.length();i++)
            {
                if(s[i]=='R')
                    ty++;
                if(s[i]=='L')
                    ty--;
                if(s[i]=='U')
                    tx--;
                if(s[i]=='D')
                    tx++;
                if(a[tx][ty]=='#')
                {
                    flag=1;
                    cout<<"I am dizzy!"<<endl;
                    break;
                }
                else if(tx<1||tx>n||ty<1||ty>n)
                {
                    flag=1;
                    cout<<"I am out!"<<endl;
                    break;
                }
                else if(tx==ex&&ty==ey)
                {
                    flag=1;
                    cout<<"I get there!"<<endl;
                    break;
                }
            }
            if(flag==0)
                cout<<"I have no idea!"<<endl;
        }
    }
    return 0;
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20010 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29405 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
13696 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22632 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
16635 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20841 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
14909 0
833
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载