add a1016

This commit is contained in:
Oliver Lew
2018-05-05 16:29:12 +08:00
parent d19cec7610
commit 6892db4fa9
+18
View File
@@ -0,0 +1,18 @@
大体思路:
- 题目给了不同人的不同通话记录, 要求输出每个人的账单. 那么最好我们在读取了数据之后, 立即对数据进行排序. **首先对名称排序, 其次对时间排序**. 这样后面就好处理了.
- 具体处理数据, 对比每相邻的两个记录, 以确定是否是同一个人/是否是同一组通话记录
- 如果两组记录姓名不同, 则为一个新的账单, 此时需要输出总结, 将相关变量归零
- 如果**不是上述情况**, 并且两组记录分为为'on-line'和'off-line', 那么则找到一组通话记录. 此时需计算通话费用, 累计总费用以及输出此记录信息.
数据结构:
- `struct[N + 1]`: 结构体包括名称, 月, 日, 时, 分, 时间(归算为分钟)和通话状态. 数组要比数据多1是因为要用最后一个作为空白对照, 以减少特殊情况的处理
注意的点:
- 计算费用
- (在其他博客看到的方法)计算从0到开始/结束时间的费用, 两者相减. 我觉得这种方法是最简单的, 实现容易.
- 我的方法是从开始到结束, 对每小时内的情况进行处理, 照顾到不足一小时的情况, 具体实现见`calccharge`函数.
- 输出, 除了上面思路中谈到的何时输出什么, 还有一点应该注意
- 对于每个人, 如果没有需要输出的记录, 那么就什么都不要输出, 所以只能在明确有合理通话记录时, 再输出账单开头的姓名和月份的信息