我们的征途是星辰大海

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

共有四种方格:

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

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

‘S’ 代表curiosity的起始位置

‘T’ 代表curiosity的目的地

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

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

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

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

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

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

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

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

                样例输入
                2 
                2 
                S. 
                #T 
                2 
                RD 
                DR 
                3 
                S.# 
                .#. 
                .T# 
                3 
                RL 
                DDD 
                DDRR 
            
            
                样例输出
            I get there!
            I am dizzy!
            I have no idea!
            I am out!
            I get there!

题目简单但是要注意循环嵌套

#include<iostream>
using namespace std;
int main()
{
 char map[51][51];
 char routine[10000];
 int x, y, m, n, k;
 cin >> m;
 while (m--)
 {
  cin >> n;
  for(int i=0;i<n;++i)
   for (int j = 0; j < n; ++j)
   {
    cin >> map[i][j];
    if (map[i][j] == 'S')
    {
     x = i;
     y = j;
    }
   }
  cin >> k;
  while (k--)
  {
   int tempx = x, tempy = y;
   cin >> routine;
   int len = strlen(routine);
   for (int j = 0; j!=len; ++j)
   {
    if (routine[j] == 'L') --tempy;
    else if (routine[j] == 'R')++tempy;
    else if (routine[j] == 'D')++tempx;
    else --tempx;
    if (map[tempx][tempy] == 'T')
    {
     cout << "I get there!" << endl;
     break;
    }
    else if (map[tempx][tempy] == '#')
    {
     cout << "I am dizzy!" << endl;
     break;
    }
    else if (tempx < 0 || tempx >= n || tempy < 0 || tempy >= n)
    {
     cout << "I am out!" << endl;
     break;
    }
    if (j == len - 1)
    {
     cout << "I have no idea!" << endl;
    }
   }
  }
 }
 //while (1);
 return 0;
}
发布了90 篇原创文章 · 获赞 7 · 访问量 2155

猜你喜欢

转载自blog.csdn.net/weixin_43784305/article/details/104055029