题目来源:
P1093 [NOIP2007 普及组] 奖学金 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1093代码:
//洛谷 P1093 [NOIP2007 普及组] 奖学金 AC代码 2022 01 28(C++) #include<bits/stdc++.h> using namespace std; struct s{ int chi; //语文成绩 int mat; //数学成绩 int eng; //英语成绩 int num; //成绩总和 int nom; //输入顺序 }a[310]; int n,maxn,maxl; //maxn,maxl 为排序做准备 int main(){ //输入 cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].chi>>a[i].mat>>a[i].eng; a[i].nom=i; //记录输入顺序 a[i].num=a[i].chi+a[i].mat+a[i].eng; //记录总分 } //排序 //采用找最大值与当前数交换的方法 for(int i=1;i<n;i++){ maxn=a[i].num; maxl=i; for(int o=i+1;o<=n;o++){ if(a[o].num>maxn){ maxn=a[o].num; maxl=o; } else if(a[o].num==maxn){ if(a[maxl].chi<a[o].chi){ maxn=a[o].num; maxl=o; } } } swap(a[i],a[maxl]); } //输出 for(int i=1;i<=5;i++){ printf("%d %d\n",a[i].nom,a[i].num); } return 0; }
有一丢丢复杂