1 条题解
-
1
#include<bits/stdc++.h> using namespace std; int main() { int n; //同学数。 cin>>n; //输入同学数n。 string s[n]; //n个同学名。 int y[n],m[n],d[n],sum[n],cnt[n],old[n]; //每人的出生年y,月m,日d。 //sum是为了方便对比取的出生时间值。 //cnt是为了对比,记录出生时间值。 //old是为了输出,记录出生早的人的编号。 for(int i=0;i<n;i++) { cin>>s[i]>>y[i]>>m[i]>>d[i]; //循环输入同学名及出生年月日。 sum[i]=y[i]*10000+m[i]*100+d[i]; //求sum,取得一个8位数(4位年份,2位月份,2位日期)。 } for(int i=0;i<n;i++) { cnt[i]=999999998; //cnt赋大值,对比出来生日早(出生时间值sum越小,出生越早,年龄越大!)的人。 for(int j=0;j<n;j++) if(sum[j]<=cnt[i]) //如果sum[j]比cnt小。 { cnt[i]=sum[j]; //cnt就赋值sum[j]以继续对比。 old[i]=j; //old记录当前生日最早的人的编号。 } sum[old[i]]=999999999; //已取过的数赋大值,等同于清除此数,避免重复。 } for(int i=0;i<n;i++) cout<<s[old[i]]<<endl; //从大到小循环输出人名。 return 0; }
- 1
信息
- ID
- 457
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 57
- 已通过
- 17
- 上传者