# 搶口罩比賽
https://neoj.sprout.tw/problem/618/
### 題目敘述
最近有句話精準道出人民心聲。
***昔日戴口罩搶錢,今日帶錢搶口罩。***
因此,某地決定來辦一場搶口罩大賽。規則如下:
在一個有障礙物的**正方形場地**,參賽者用口罩矇住眼睛,由旁邊的同伴指引方向。若在整個過程中
1. 沒有撞到障礙物
1. 沒有走出邊界
1. 走到口罩處
參賽者就可以得到一盒口罩!
現在,你為了自己的生命安全,決定也來參加這個比賽。但你的同伴到底會不會給出正確的方向,讓你得到一盒口罩?
### 上傳說明
你只需要完成並上傳isValid, isArrived 兩個function就可以了。
```cpp
#include <iostream>
#include <cstring>
using namespace std;
// map info
int map_size;
char map[20][20];
/* 根據現在的位置與接下來的方向指令,判斷下一步合不合法。
(這個函式可用於 isArrived 裡) */
bool isValid(int current[], char dir);
/* 最終是否可以成功取得口罩 */
bool isArrived(int start[], int end[], char command[]);
/* Your code will be put here */
int main(){
char command[100];
int start[2];
// position: (start[0], start[1])
int end[2];
// read map size
cin >> map_size;
// read map
for (int i=0; i<map_size; i++)
for (int j=0; j<map_size; j++)
cin>>map[i][j];
// read start and end position
cin >> start[0] >> start[1];
cin >> end[0] >> end[1];
// read command
cin >> command;
if (isArrived(start, end, command))
cout<<"Get the mask";
else cout<<"Cry";
}
```
### 輸入說明
第一行有一個 int map_size,保證2 ≤ map_size ≤ 10。代表場地為一個 map_size*map_size的正方形。
接下來輸進一個大小為 map_size*map_size 的字元二維陣列來描述場地 '.'代表普通地, 'o'代表障礙物。
再來兩行,為參賽者的起始座標與口罩的座標。座標為二維座標,因此各有兩個數值。座標表示法如下:(3*3的場地為例)

注意:參賽起始座標與口罩座標不會有障礙物。
最後一行為一個字串,代表同伴指導的指令,R代表向右 一格,L代表向左一格, U代表向上一格, D代表向下格。
輸入已處理好,你只需要完成上面兩個function。
### 輸出說明
根據同伴的一連串指令,判斷你最後能不能得到口罩。
若成功獲取口罩,輸出 Get the mask,
若失敗,輸出 Cry。
輸出後不需換行。
(輸出已處理好)
#### 範例輸入1
```
5
....o
.....
....o
.o.o.
.....
1 2
4 4
URDDLDDRR
```
#### 範例輸出1
```
Get the mask
```
#### 範例輸入2
```
5
.o...
.....
.o..o
...o.
.....
1 2
0 3
RRUUDL
```
#### 範例輸出2
```
Cry
```
# Code
```cpp
bool isValid(int current[], char dir){
if (dir == 'L')
current[1]--;
if (dir == 'U')
current[0]--;
if (dir == 'R')
current[1]++;
if (dir == 'D')
current[0]++;
if (current[0] < 0 || current[0] > map_size - 1)
return false;
if (current[1] < 0 || current[1] > map_size - 1)
return false;
if (map[current[0]][current[1]] == 'o')
return false;
return true;
}
bool isArrived(int start[], int end[], char command[]){
for (int i = 0 ; command[i] != '\0' ; i++)
{
if (isValid(start , command[i]))
continue;
return false;
}
if (start[0] == end[0] && start[1] == end[1])
return true;
else
return false;
}
```