问题标题: 酷町堂:啦啦啦(~ ̄▽ ̄)~送分的 4572 年龄排序

1
0
曹砚青
曹砚青
中级光能
中级光能

题目描述 Description

小明帮老师统计班上同学的出生日期,并根据年龄给同学们排序。统计的出生日期格式为六位数字,例如,某同学是1998-9-30日出生的,那么统计的格式就是98 9 30。请你编写一个程序,请按照他们年龄从小到大排序,年龄相同的按照输入的顺序先后来排序。

输入描述 Input Description

n+1行,第一行一个整数n,表示统计的人数
接下来n行,每行一个字符串和三个二位整数组成的数(0省略),中间通过空格隔开

输出描述 Output Description

n行,每行一个字符串,表示排序后姓名

样例输入 Sample Input

3 xiaoming 98 9 30 xiaohong 97 7 20 xiaohua 98 9 29

样例输出 Sample Output

xiaoming xiaohua xiaohong

数据范围及提示 Data Size & Hint

0<n<=100
所有同学的出生日期都在2000年1月1号之前

 

 

妙啊~~~


0
0
0
康曦
康曦
中级光能
中级光能
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
struct kx{
    string s;
    int n,y,r,d;
}a[110];
bool cmp(kx x,kx y){
    if(x.n!=y.n) return x.n>y.n;
    if(x.y!=y.y) return x.y>y.y;
    if(x.r!=y.r) return x.r>y.r;
    return x.d>y.d;
}
int main(){
    int n;
    cin>>n; 
    for(int i=1;i<=n;i++){
        cin>>a[i].s>>a[i].n>>a[i].y>>a[i].r;
        a[i].d=i;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i].s<<endl;
    }
} 

30分代码。。。

0
丁博扬
丁博扬
中级天翼
中级天翼

if(x.年!=y.年){

return x.年>y.年;

}

if(x.月!=y.月){

return x.月>y.月;

}

if(x.日!=y.日){

return x.日>y.日;

}

return x.顺序<y.顺序;

sort(a+1,a+n+1,cmp);

记得加algorithm哦

还有不会的评论给我

for(int i=1;i<=n;i++){

输入年月日

a[i].id=i;//记录顺序

}

循环输出

0
我要回答