乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
PAT (Basic Level) Practice 1100 校庆
问题分析
- 题设给定了一组校友ID, 然后给定了一组来宾ID, 要求输出是校友的来宾中, 最年长的一位。
- 如果来宾中没有校友, 则输出来宾中最年长的一位。
- 由于涉及到查询, 所以本题的重点在于数据的存储与查询。ID是由数字和大写字母组成, 所以需要存储成字符串。
- 查询时的比较可以使用字符串比较函数。
- 同时为了性能考虑, 可能先对要查询的校友ID进行排序, 然后查询时使用二分查找。
- 进一步性能考虑, 存储最值时可以存储最年长校友在数组中的索引而不是直接存储字符串, 避免多次字符串拷贝。
完整描述步骤
- 获取输入: 校友人数, 各个校友的ID
- 对各个校友的ID进行排序
- 初始化记录器:
- 最年长的校友索引 = -1
- 最年长的来宾索引 = -1
- 最年长的校友生日 = “99999999”
- 最年长的来宾生日 = “99999999”
- 出席的来宾是校友的数量 = 0
- 获取输入: 来宾人数, 各个来宾的ID
- 对于每一个来宾的ID:
- 如果来宾的ID在校友ID中:
- 出席的来宾是校友的数量++
- 如果来宾的生日 大于 最年长的校友生日:
- 最年长的校友生日 &#
- 如果来宾的ID在校友ID中: