统计学生出勤次数,n个学生,每个学生有学号和出勤记录,该记录为10位二进制位串,1为出勤,0为未出勤。 按出勤次数降序排列输出,如果出勤次数相同,按学号从小到大排序。
时间: 2023-09-27 11:04:39 浏览: 74
易语言源码学生出勤统计.rar
可以使用哈希表来统计每个学生的出勤次数,然后再按照要求排序输出。
具体做法如下:
1. 定义一个哈希表,将每个学生的学号作为键,出勤次数作为值。
2. 遍历每个学生的出勤记录,统计出勤次数,并更新哈希表中对应学生的出勤次数。
3. 将哈希表中的键值对转化为一个二元组列表,其中每个二元组的第一个元素为学生的出勤次数,第二个元素为学生的学号。
4. 对二元组列表进行排序,先按照出勤次数降序排列,如果出勤次数相同,则按照学号从小到大排序。
5. 遍历排序后的二元组列表,输出每个学生的出勤次数和学号。
代码实现如下:
```python
from collections import defaultdict
# 定义哈希表
attendance = defaultdict(int)
# 统计每个学生的出勤次数
n = int(input()) # 学生数
for i in range(n):
student_id, attend_record = input().split()
attend_count = attend_record.count('1')
attendance[student_id] += attend_count
# 将哈希表中的键值对转化为二元组列表,并按规定排序
attend_list = [(v, k) for k, v in attendance.items()]
attend_list.sort(reverse=True)
# 输出结果
for attend_count, student_id in attend_list:
print(student_id, attend_count)
```
输入样例:
```
5
1001 0111111111
1002 1100000000
1003 1111111111
1004 0000000000
1005 1111000011
```
输出样例:
```
1003 10
1001 9
1005 4
1002 2
1004 0
```
阅读全文