B3630 排队顺序 題解
ShanCreeperPro · · 题解
B3630 排队顺序 題解
管理员注:
阅读本文章前,请先阅读
如需系统学习相关知识点请报名【洛谷-基础算法计划】
点赞上文章即代表您已阅读并熟知其内容。
有
我们可以使用链表完成:
- 建立数组
\texttt{nxt} 表示每个人身后人的编号; - 定义
\texttt{now} 表示当前指针,初始为\texttt{head} ; - 如果
\texttt{now} 不是0 时,输出\texttt{now} ,并将\texttt{now} 变为下一个指针位置。
比如数据:4 6 0 2 3 5。
我们可以先列一个表格。
| 1 | 2 | 3 | 4 | 5 | 6 | |
|---|---|---|---|---|---|---|
| 4 | 6 | 0 | 2 | 3 | 5 |
假设队首为 1 号,则
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 6 |
所以输出为:
但是,如果不知道
很简单,如果一个编号如果没有出现在任何一个人的后面,那么他就是第一个人。