1 条题解

  • 0
    @ 2025-10-30 10:48:01

    思路分析

    1. 任务拆解:

    • 读取选手人数n
    • 读取n个选手的原始成绩(保存到两个数组)
    • 将一个数组按降序排列作为排名参考
    • 为每个原始成绩在排序数组中查找名次
    • 输出每个选手的名次

    2. 关键点分析:

    • 需要保留原始成绩顺序(数组b)和排序后顺序(数组a)
    • 使用冒泡排序对数组a进行降序排列
    • 名次规则:在排序数组中第一次出现的位置就是名次
    • 相同分数的选手名次相同

    3. 步骤规划: 第一步:读取选手人数n 第二步:循环读取成绩到数组a和b(备份) 第三步:对数组a进行降序冒泡排序 第四步:对每个原始成绩,在排序数组中查找名次 第五步:输出每个选手的名次

    4. 代码对应:

    • cin>>n:读取选手人数
    • 第一个for循环:输入成绩到a和b数组
    • 排序双重循环:对数组a进行降序排列
    • if(a[j]<a[j+1]):将较大值交换到前面
    • 外层查找循环:遍历每个原始成绩
    • 内层查找循环:在排序数组a中找对应名次
    • if(b[i]==a[j]):找到该成绩在排序数组中的位置
    • break:找到第一个就停止,确保相同分数名次相同
    • cout<<j<<" ":输出名次
    • 1

    信息

    ID
    520
    时间
    1000ms
    内存
    32MiB
    难度
    4
    标签
    (无)
    递交数
    355
    已通过
    171
    上传者