1 条题解

  • 0
    @ 2025-10-29 15:39:11

    思路分析

    1. 任务拆解:

    • 读取小朋友数量n和要找的第k大的数
    • 读取n个小朋友写的数字
    • 通过k次循环找出第k大的数
    • 每次找出当前最大值后将其标记为极小值

    2. 关键点分析:

    • 使用"标记排除法":每次找到当前最大值后,将其值设为极小值,使其在后续查找中不会被选中
    • 第k大的数 = 进行k次找最大值操作后找到的那个数
    • 第j次循环找到的就是第j大的数,当j=k时输出结果
    • 这种方法通过物理排除已找到的数来简化问题

    3. 步骤规划: 第一步:读取n和k 第二步:循环读取n个数字 第三步:进行k次循环,每次找出当前最大值 第四步:当j=k时,输出当前最大值(即第k大的数) 第五步:将当前最大值标记为极小值,排除后续查找

    4. 代码对应:

    • cin>>n>>k:读取人数和k值
    • 第一个for循环:输入n个数字
    • 外层for循环:进行k次查找(j从1到k)
    • 内层for循环:找出当前最大值及其位置
    • if(j==k) cout<<a[maxi]:输出第k大的数
    • a[maxi]=-999999:将当前最大值标记为极小值
    • 1

    信息

    ID
    173
    时间
    1000ms
    内存
    16MiB
    难度
    6
    标签
    (无)
    递交数
    844
    已通过
    285
    上传者