2 条题解
-
1
#include<iostream> #include<algorithm> using namespace std; struct score{ int c,m,e,a,i;//定义struct类,c语文,m数学,e英语,a总分,i学号 }; score s[301]; bool cmp(score x,score y){//定义比较器,待sort使用 bool q=0; if(x.a>y.a) q=1; else if(x.a==y.a&&x.c>y.c) q=1; else if(x.a==y.a&&x.c==y.c&&x.i<y.i) q=1; return q; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){//读入信息,计算总分 cin>>s[i].c>>s[i].m>>s[i].e; s[i].i=i+1; s[i].a=s[i].c+s[i].m+s[i].e; } sort(s,s+n,cmp);//按比较器cmp规则排序 for(int i=0;i<5;i++) cout<<s[i].i<<" "<<s[i].a<<endl; }
-
1
建议用swap,会方便不少
#include<iostream> using namespace std; int a[310],b[310],d[310],n,x,y; int main() { cin>>n; for(int i=1;i<=n;i++) b[i]=i; for(int i=1;i<=n;i++) { cin>>a[i]>>x>>y; d[i]=a[i]+x+y; } for(int i=1;i<=n-1;i++) { for(int j=1;j<=n-i;j++) if(d[j]<d[j+1]||(d[j]==d[j+1]&&a[j]<a[j+1])) { swap(d[j],d[j+1]); swap(a[j],a[j+1]); swap(b[j],b[j+1]); } } for(int i=1;i<=5;i++) cout<<endl<<b[i]<<" "<<d[i]; return 0; }
- 1
信息
- ID
- 155
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 117
- 已通过
- 44
- 上传者