乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
问题分析
题设要求将给定的N个人按要求排成K排,
由于有明确列出要求, 所以我们初步判断这是一道按照要求翻译成代码的模拟题。
要求如下:
- 按照公式N/K(向下取整)计算每排人数, 多出来的人全部站在最后一排.
- 后排所有人的各自都不比前排任何人矮;(这意味着需要排序, 根据样例输出, 高个子在第一行, 所以是降序排列)
- 每排中最高者站中间, 并明确给出(中间位置为 m/2+1,其中 m 为该排人数,除法向下取整)
- 每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧
- 这需要提取一个方法来模拟这个排序方式
- 若多人身高相同,则按名字的字典序升序排列。题设保证无重名
由于身高和名称是绑定关系, 排序用的是身高, 输出用的是名称,
之前分析其他题目的时候说过, 这种时候要将绑定的信息存储为类键值对结构, 放在一起, C语言中这意味着结构体。

这篇博客详细解析了PAT乙级考试中1055题的解题思路,包括问题分析、模拟过程、伪代码描述及C语言实现。题目要求根据身高和特定规则排列人员,博主介绍了如何使用结构体存储身高和姓名,并按身高降序、姓名字典序升序排序。然后,通过模拟每排人员的左右交替站位,实现了题目的完整解决方案。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



