0
已解决
我写的 4572 年龄排序 的 80 分代码如下:
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
int n;
struct px{
string name;
int x,y,z;
}a[15000];
bool cmp(px o,px p){
if(o.x!=p.x){
return o.x>p.x;
}
else if(o.y!=p.y){
return o.y>p.y;
}
else{
return o.z>p.z;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].x>>a[i].y>>a[i].z;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].name<<endl;
}
return 0;
}
请找错
0
已采纳
你这排序错了,他说年龄相同的按照输入的顺序先后来排序。
所以输入这么写:
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].x>>a[i].y>>a[i].z;
a[i].pos=i;
}
所以排序这么写:
bool cmp(stu x,stu y){
if(x.x!=y.x) return x.x>y.x;
if(x.y!=y.y) return x.y>y.y;
if(x.z!=y.z) return x.z>y.z;
return x.pos<y.pos;
}
最后在a数组里加一个pos,即可AC
0
