T1318 第K名

作者:波纹飞鱼

T1318 第K名

题目

刚举行的万米长跑活动中,有N个人跑完了全程,所用的时间都不相同。颁奖时为了增加趣味性,随机抽了一个数K,要奖励第K名一双跑鞋。
现在组委会给你N个人的姓名、成绩(用时,单位是秒),请你编程快速输出第K名的姓名。

输入格式

第一行:2个整数NK
下面N行:每行第1个是字符串表示姓名;第2个是个整数,表示这个人跑完的使用时间。

输出格式

一行,第K名的姓名。

解题

一,流程图

Created with Raphaël 2.2.0 开始 输入总人数和得奖名次 输入每个运动员的名字与所用时间 按照时间重新排序 输出得奖者名字 结束

二,提取关键点

1.输入名字与时间
2.按照时间重新排序

三,解决关键点

1.输入名字与时间

名字是字符串,使用string定义字符串数组储存。时间是数值,使用int定义数值数值储存。

2.按照时间重新排序

本篇博客使用冒泡排序,即依次比较相邻两个数值,若逆序则交换两个数值的位置。
注意:本题在交换数值位置的同时,需同时将数值所对应的字符串同时交换。
(具体基础排序算法请移步至大佬的课件文章

编程

#include<iostream>
using namespace std;
int main()
{
    string a[111],y;
    int n,k,i,j,b[111],x;
    cin>>n>>k;
    for(i=0;i<n;i++){
        cin>>a[i]>>b[i];
    }
    for(i=n-1;i>=1;i--)
        for(j=0;j<i;j++)
            if(b[j]>b[j+1]){
                x=b[j];b[j]=b[j+1];b[j+1]=x;
                y=a[j];a[j]=a[j+1];a[j+1]=y;
            }
    cout<<a[k-1];
    return 0;
}
发布了46 篇原创文章 · 获赞 50 · 访问量 9672

猜你喜欢

转载自blog.csdn.net/lz28noi/article/details/104364115