1 条题解

  • 0
    @ 2025-8-24 22:20:30

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar LinkZelda
    Be careful, Link.

    搬运于2025-08-24 22:20:30,当前版本为作者最后更新于2020-04-19 18:49:25,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这题可以用来练结构体,和自定义 sortsort

    • 我们可以声明一个“选手”( playerplayer )型的结构体,来存储每一个人的分数和他的号码
    struct player//声明一个结构体用来存选手的号数和分数 
    {
    	int name,score;//顾名思义,name是号码,score是分数
    }; 
    
    • 然后怎么找最高分的人呢? 我们可以自定义一个 boolbool 类型的 cmpcmp 函数,自定义 STLSTL 排序。
    bool cmp(player a,player b)//自定义结构体排序函数(按分数从大到小排序) 
    {
    	return a.score>b.score;
     } 
    
    • 因为我们定义排序函数是从大到小排的,所以第一个人的分数一定是最大的,那我们输出就好了。

    • 完整代码(含注释):

    #include<iostream>
    #include<algorithm>//使用 sort ,要调用 algorithm 库 
    using namespace std;
    struct player//声明一个结构体用来存选手的号数和分数 
    {
    	int name,score;
    }; 
    bool cmp(player a,player b)//自定义结构体排序函数(按分数从大到小排序) 
    {
    	return a.score>b.score;
     } 
    int main()
    {
    	player a[10];//声明“选手”类型变量 
    	int s1,s2,s3,s4;//用于输入每个人的分数 
    	for(int i=1;i<=5;i++)//i即为选手号数 
    	{
    		cin>>s1>>s2>>s3>>s4;
    		a[i].name=i;
    		a[i].score=s1+s2+s3+s4; 
    	}
    	sort(a+1,a+6,cmp);//自定义排序
    	cout<<a[1].name<<' '<<a[1].score;//因为是从大到小排,所以第一个人一定是分数最高的 
    	return 0; 
     } 
    
    • 1

    信息

    ID
    5423
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者