{ "title": "题目描述", "description": "一年一度的江苏省小学生程序设计比赛开始了,组委会公布了所有学生的成绩,成绩按分数从高到低排名,成绩相同按年级从低到高排名。现在主办单位想知道每一个排名 的学生前,有几位学生的年级低于他。", "keywords": "江苏省, 小学生, 程序设计比赛, 成绩统计, 排名, 年级", "content": "\n输入描述\n第一行只有一个正整数n(1<=n<=200),表示参数的学生人数\n\n第2~n+1行,每行有两个正整数s(0<=s<=400)和g(1<=g<=6),之间用一个空格隔开,其中第i+1行的第一个数s表示第i个学生的成绩,第i+1行的第二个数g表示第i个学生的年级\n\n输出描述\n输出n行,每行只有一个正整数,其中第i行的数k表示排第i名的学生前面有k个学生排名比他高,且年级比他低\n\n样例\n输入\n5\n300 5\n200 6\n350 4\n400 6\n250 5\n输出\n0\n0\n1\n1\n3\n思路:\n1. 首先读取输入的学生人数n;\n2. 创建一个二维列表students,用来存储每个学生的成绩和年级;\n3. 读取n行输入,将每个学生的成绩和年级存入students列表中;\n4. 对students列表进行排序,按照成绩从高到低排名,如果成绩相同,则按照年级从低到高排名;\n5. 创建一个长度为n的列表result,用来存储每个学生前面有几位学生排名比他高且年级比他低;\n6. 遍历排序后的students列表,对于每个学生,计算前面有几位学生排名比他高且年级比他低,并将结果存入result列表中;\n7. 输出result列表中的每个元素。\n\n# 定义函数,用来计算每个学生前面有几位学生排名比他高且年级比他低\ndef count_students(students):\n result = []\n for i in range(len(students)):\n count = 0\n for j in range(i):\n if students[j][1] < students[i][1]: # 年级比他低\n count += 1\n result.append(count)\n return result\n\n# 读取输入的学生人数\nn = int(input())\n\n# 创建二维列表,用来存储每个学生的成绩和年级\nstudents = []\n\n# 读取n行输入,将每个学生的成绩和年级存入students列表中\nfor _ in range(n):\n s, g = map(int, input().split())\n students.append([s, g])\n\n# 对students列表进行排序,按照成绩从高到低排名,如果成绩相同,则按照年级从低到高排名\nstudents.sort(key=lambda x: (-x[0], x[1]))\n\n# 计算每个学生前面有几位学生排名比他高且年级比他低\nresult = count_students(students)\n\n# 输出每个学生前面有几位学生排名比他高且年级比他低\nfor r in result:\n print(r)\n"

江苏省小学生程序设计比赛成绩统计 - 计算排名前面的低年级学生数量

原文地址: https://www.cveoy.top/t/topic/pCLY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录