鱼C论坛

 找回密码
 立即注册
查看: 1326|回复: 2

[已解决]这个题怎么做啊

[复制链接]
发表于 2023-10-27 20:44:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述
一年一度的江苏省小学生程序设计比赛开始了,组委会公布了所有学生的成绩,成绩按分数从高到底排名,成绩相同按年级从低到高排。现在主办单位想知道每一个排名的学生前,有几位学生的年级低于他。

输入描述
第 1 行只有一个正整数 n
(1≤n≤200
),表示参赛的学生人数。

第 2∼n+1
行,每行有两个正整数 s
(0≤s≤400
)和 g
(1≤g≤6
),之间用一个空格隔开,其中第 i+1
行的第一个数 s
表示第 i
个学生的成绩,第 i+1
行的第二个数 g
表示第 i
个学生的年级。

输出描述
输出 n
行,每行只有一个正整数,其中第 i
行的数 k
表示排第 i
名的学生前面有 k
个学生排名比他高,且年级比他低。
最佳答案
2023-10-27 20:45:23
这个题目的要求是计算每个学生前面有几位学生的年级低于他。我们可以按照以下步骤解决这个问题:

1. 首先,我们需要读取输入数据。第一行是一个正整数n,表示参赛的学生人数。接下来的n行,每行有两个正整数s和g,表示学生的成绩和年级。

2. 然后,我们可以创建一个二维数组students来存储每个学生的成绩和年级。students[ i][0]表示第i个学生的成绩,students[ i][1]表示第i个学生的年级。

3. 接下来,我们可以对students数组进行排序。首先按照成绩从高到低排序,如果成绩相同则按照年级从低到高排序。这可以使用Python内置的sorted函数,并使用lambda函数作为排序的key。

   students = sorted(students, key=lambda x: (-x[0], x[1]))
   

4. 然后,我们可以创建一个空的结果数组result,用来存储每个学生前面有几位学生的年级低于他。

5. 接下来,我们可以遍历排序后的students数组,计算每个学生前面有几位学生的年级低于他。对于第i个学生,我们可以遍历前i个学生,如果前面的学生的年级比他低,就增加计数器count。

   result = []
   for i in range(n):
       count = 0
       for j in range(i):
           if students[j][1] < students[ i][1]:
               count += 1
       result.append(count)
   

6. 最后,我们可以输出结果数组result。

   for count in result:
       print(count)
   

完整的代码如下:
n = int(input())
students = []
for _ in range(n):
    s, g = map(int, input().split())
    students.append([s, g])

students = sorted(students, key=lambda x: (-x[0], x[1]))

result = []
for i in range(n):
    count = 0
    for j in range(i):
        if students[j][1] < students[ i][1]:
            count += 1
    result.append(count)

for count in result:
    print(count)

希望能帮到你!如果有任何问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-27 20:45:23 | 显示全部楼层    本楼为最佳答案   
这个题目的要求是计算每个学生前面有几位学生的年级低于他。我们可以按照以下步骤解决这个问题:

1. 首先,我们需要读取输入数据。第一行是一个正整数n,表示参赛的学生人数。接下来的n行,每行有两个正整数s和g,表示学生的成绩和年级。

2. 然后,我们可以创建一个二维数组students来存储每个学生的成绩和年级。students[ i][0]表示第i个学生的成绩,students[ i][1]表示第i个学生的年级。

3. 接下来,我们可以对students数组进行排序。首先按照成绩从高到低排序,如果成绩相同则按照年级从低到高排序。这可以使用Python内置的sorted函数,并使用lambda函数作为排序的key。

   students = sorted(students, key=lambda x: (-x[0], x[1]))
   

4. 然后,我们可以创建一个空的结果数组result,用来存储每个学生前面有几位学生的年级低于他。

5. 接下来,我们可以遍历排序后的students数组,计算每个学生前面有几位学生的年级低于他。对于第i个学生,我们可以遍历前i个学生,如果前面的学生的年级比他低,就增加计数器count。

   result = []
   for i in range(n):
       count = 0
       for j in range(i):
           if students[j][1] < students[ i][1]:
               count += 1
       result.append(count)
   

6. 最后,我们可以输出结果数组result。

   for count in result:
       print(count)
   

完整的代码如下:
n = int(input())
students = []
for _ in range(n):
    s, g = map(int, input().split())
    students.append([s, g])

students = sorted(students, key=lambda x: (-x[0], x[1]))

result = []
for i in range(n):
    count = 0
    for j in range(i):
        if students[j][1] < students[ i][1]:
            count += 1
    result.append(count)

for count in result:
    print(count)

希望能帮到你!如果有任何问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-27 20:45:37 | 显示全部楼层
你可以使用C或C++编写程序来解决这个问题。以下是一个可能的解决方案:
#include <iostream>#include <vector>#include <algorithm>struct Student {    int score;    int grade;};bool compareStudents(const Student& s1, const Student& s2) {    if (s1.score == s2.score) {        return s1.grade < s2.grade;    }    return s1.score > s2.score;}int main() {    int n;    std::cin >> n;    std::vector<Student> students(n);    for (int i = 0; i < n; ++i) {        std::cin >> students[i].score >> students[i].grade;    }    std::sort(students.begin(), students.end(), compareStudents);    std::vector<int> numLowerGrades(n);    for (int i = 0; i < n; ++i) {        int count = 0;        for (int j = 0; j < i; ++j) {            if (students[j].grade < students[i].grade) {                count++;            }        }        numLowerGrades[i] = count;    }    for (int i = 0; i < n; ++i) {        std::cout << numLowerGrades[i] << std::endl;    }    return 0;}
该程序首先读取学生的数量n,然后读取每个学生的成绩和年级。接下来,它使用自定义的比较函数按照成绩从高到低、年级从低到高的顺序对学生进行排序。然后,它计算每个学生前面有多少位成绩更高且年级更低的学生,并将结果存储在一个向量中。最后,它输出这个向量中的所有元素。

希望这可以帮助你解决问题!

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表