week3-[分支嵌套]方阵
题目描述
有 n×mn\times mn×m 个人站成 nnn 行 mmm 列的方阵。我们想知道第 xxx 行 yyy 列的人的某个方向有没有人。
输入格式
输入共 222 行。
第 111 行输入 444 个正整数 n,m,x,yn,m,x,yn,m,x,y。
第 222 行输入 111 个字符为 U
、D
、L
、R
其中之一,表示想知道方向上/下/左/右有没有人。
输出格式
输出共 111 行表示答案。如果有人则输出 YE5
,否则输出 N0
。
样例 #1
样例输入 #1
3 3 1 1
L
样例输出 #1
N0
样例 #2
样例输入 #2
3 4 2 4
D
样例输出 #2
YE5
提示
数据范围
对于所有数据,1≤n,m≤1001\leq n,m\leq 1001≤n,m≤100,1≤x≤n1\leq x \leq n1≤x≤n,1≤y≤m1 \leq y \leq m1≤y≤m。
🔎 题意理解
- 方阵有 n 行 m 列,每个格子里有一个人。
- 我们关注的是 第 x 行 y 列的人。
- 输入一个方向(U=上,D=下,L=左,R=右)。
- 需要判断在这个方向上是否还能看到人(即对应方向上是否存在格子)。
🧩 思路分析
- 向上 (U) :如果
x > 1
,说明上面还有人 → 输出YE5
;否则N0
。 - 向下 (D) :如果
x < n
,说明下面还有人 → 输出YE5
;否则N0
。 - 向左 (L) :如果
y > 1
,说明左边还有人 → 输出YE5
;否则N0
。 - 向右 ® :如果
y < m
,说明右边还有人 → 输出YE5
;否则N0
。
🖥️ C++代码实现
c++
#include <iostream>
using namespace std;
int main() {
int n, m, x, y;
char dir;
cin >> n >> m >> x >> y;
cin >> dir;
if (dir == 'U') {
if (x > 1) cout << "YE5";
else cout << "N0";
} else if (dir == 'D') {
if (x < n) cout << "YE5";
else cout << "N0";
} else if (dir == 'L') {
if (y > 1) cout << "YE5";
else cout << "N0";
} else if (dir == 'R') {
if (y < m) cout << "YE5";
else cout << "N0";
}
return 0;
}