题解 P6408 【[COCI2008-2009#3] PET】
这题可以用来练结构体,和自定义 sort !
-
我们可以声明一个“选手”(
player )型的结构体,来存储每一个人的分数和他的号码。struct player//声明一个结构体用来存选手的号数和分数 { int name,score;//顾名思义,name是号码,score是分数 }; -
然后怎么找最高分的人呢? 我们可以自定义一个
bool 类型的cmp 函数,自定义STL 排序。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; }