2336. 皇家骑士的“窄廊”觐见挑战

1000ms 256MB 简单
题目描述
某王国有 5 位骑士,编号分别为 $1, 3, 5, 7, 9$。在国王召见他们之前,他们必须经过一条只能从一边进出的窄长廊。 1. 所有骑士必须按照编号**从小到大**的次序提前在长廊入口等待。 2. 只有当排在前面的骑士进入长廊后,后面的骑士才能进入长廊。 3. 国王可以随时召见当前位于长廊出口(即最后进入长廊)的那位骑士。 请编写程序,判断国王给定的召见编号序列是否合理(即是否为一个合法的出栈序列)。
输入格式
一行,包含 5 个整数,表示国王给出的召见顺序。
输出格式
一行。如果序列合理,输出 `YES`;如果不合理,输出 `NO`。
样例 1
输入 (Input)
3 1 9 7 5
输出 (Output)
YES
样例 2
输入 (Input)
3 5 1 7 9
输出 (Output)
YES
- 骑士编号固定为:$1, 3, 5, 7, 9$。 - **算法提示**: 这是一个经典的**栈模拟**问题。 1. 建立一个空栈,并准备好初始排队序列 $[1, 3, 5, 7, 9]$。 2. 遍历国王给出的目标序列: - 如果当前栈为空,或者栈顶元素不等于目标元素,就不断从初始序列中取数压入栈中。 - 如果压入后栈顶元素等于目标元素,则执行出栈(表示该骑士被召见)。 - 如果初始序列已经取完,且栈顶元素依然不匹配目标元素,则说明该序列非法。 3. 如果最终所有骑士都顺利“出栈”,则说明序列合理。
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字