题解洛谷P5740 【深基7.例9】最厉害的学生
注意:这是博客文章的随笔同步版本,原版本(也是原创)请观望https://www.cnblogs.com/ryan1015/articles/16640213.html
这道题嘛,直接用结构体就可以了呀,(其实其他dalao写的我都看不懂······)
不知道结构体的人看这里>>
结构体是一种nb函数,可以为你创建一个个性化的数据类型,具体使用方法:
struct 数据类型名{
int 数据;
short 数据;
long long a...//其他不一一列举了
int 函数(){//此外还可以定义函数
return ...
}
};//别忘了加分号!
int main(){
数据类型名 a;//只需调用结构体名就可以创建变量~
a.数据=1;//和string一样,只需调用结构体中的类型名就可定义~
这样,一个难题就解决了!只要在一个struct里定义几个数据,就可以在主函数里调用和定义他啦~
接着,还有一个难题:结构体不可sort排序,怎么才能让他排序起来呢?需要一个布尔值。我们可以定义一个布尔函数cmp,然后return自己想要的那个判断。具体定义方法:
bool cmp(node x,node y)//node为数据类型名
{
if(x.zf==y.zf)return x.id<y.id;
return x.zf>y.zf;//这里zf表示总分,>表示从大到小排序
}
然后,我相信这道题你就能迎刃而解了!只要通过cout输入,再sort,再输出,就好了!
#include<bits/stdc++.h>
using namespace std;
struct node
{
string name;
int sx,yw,yy,zf,id;
}student[1010];
bool cmp(node x,node y)
{
if(x.zf==y.zf)return x.id<y.id;
return x.zf>y.zf;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>student[i].name>>student[i].sx>>student[i].yw>>student[i].yy;
student[i].zf=student[i].sx+student[i].yy+student[i].yw;
student[i].id=i;
}
sort(student+1,student+n+1,cmp);//
cout<<student[1].name<<" " <<student[1].sx<<" "<<student[1].yw<<" " <<student[1].yy;
return 0;
}
本文来自博客园,作者:FriendlyTiger_1015,转载请注明原文链接:https://www.cnblogs.com/ryan1015/p/16640270.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理