原题链接:信息学奥赛一本通T1179-奖学金
解题思路:
利用嵌套列表字典将值存储好之后,使用python自带的itemgetter模块实现多关键字排序
注意事项:
题目中其他两个成绩是从大到小,而id是小的优先,顺序不一样,为了统一处理,我在赋值id的时候就让它的值反正赋值
比如如果是6个学生的话,id为1的我弄成5,4->2,3->3,2->4,1->5,这样就统一了大家的次序,观察可得他们之间的和是相等的,
所以只需要在最后输出的时候改为student+1-特殊改变的id,就可以还原回去
参考代码:
#奖学金
from operator import itemgetter student=int(input()) student_list=[] for n in range(student): dist={} list_score=list(map(int,input().split())) dist['all']=sum(list_score) dist['cn']=list_score[0] dist['id']=student-n student_list.append(dist) d=sorted(student_list,key=itemgetter('all','cn','id'),reverse=True) #sorted(student_list,key=attrgetter('all','cn','id')) for i in range(min(5,student)): print("{} {}".format((student+1)-d[i]['id'],d[i]['all']))
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复