用结构体+cmd
逻辑不乱就行
重点看注释
#include<bits/stdc++.h> //万能头文件 using namespace std; const int N=110; struct classmate{ string name; //人名 int y; //年份 int m; //月份 int d; //日期 int num; //输入排在第几 }a[N]; bool cmd(classmate x,classmate y)//x比y的输入顺序靠前 { return x.y<y.y || (x.y==y.y && x.m<y.m) || (x.y==y.y && x.m==y.m && x.d<y.d) ||( x.y==y.y && x.m==y.m && x.d==y.d && x.num>y.num) ; /* 1. x的年份比y的小; 2. x的年份与y的相同,x的月份比y的小; 3. x的年份、月份与y的相同,x的日期比y的小; 4. x的年份、月份、日期与y的相同,x的输出顺序比y的靠后。 */ } int main() { int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d; a[i].num=i;//输入顺序 } sort(a+1,a+n+1,cmd);//c++自带STL,排序 for(int i=1;i<=n;i++) cout<<a[i].name<<" "; return 0; }