3 条题解
-
2
#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; }
-
0
#include <string> using namespace std; const int maxn = 10001; int main() { int n; cin >> n; string name[maxn]; int year[maxn], month[maxn], day[maxn], index[maxn]; // 录入学生信息 for (int i = 0; i < n; ++i) { cin >> name[i] >> year[i] >> month[i] >> day[i]; index[i] = i; // 记录输入顺序 } // 冒泡排序 for (int i = 0; i < n - 1; ++i) { for (int j = 0; j < n - 1 - i; ++j) { // 比较年份 if (year[j] > year[j + 1]) { swap(name[j], name[j + 1]); swap(year[j], year[j + 1]); swap(month[j], month[j + 1]); swap(day[j], day[j + 1]); swap(index[j], index[j + 1]); } // 如果年份相同,比较月份 else if (year[j] == year[j + 1] && month[j] > month[j + 1]) { swap(name[j], name[j + 1]); swap(year[j], year[j + 1]); swap(month[j], month[j + 1]); swap(day[j], day[j + 1]); swap(index[j], index[j + 1]); } // 如果年份和月份相同,比较日期 else if (year[j] == year[j + 1] && month[j] == month[j + 1] && day[j] > day[j + 1]) { swap(name[j], name[j + 1]); swap(year[j], year[j + 1]); swap(month[j], month[j + 1]); swap(day[j], day[j + 1]); swap(index[j], index[j + 1]); } // 如果生日完全相同,按输入顺序逆序排列 else if (year[j] == year[j + 1] && month[j] == month[j + 1] && day[j] == day[j + 1] && index[j] < index[j + 1]) { swap(name[j], name[j + 1]); swap(year[j], year[j + 1]); swap(month[j], month[j + 1]); swap(day[j], day[j + 1]); swap(index[j], index[j + 1]); } } } // 输出结果 for (int i = 0; i < n; ++i) { cout << name[i] << " "; } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int i,j,k,n,m; struct sb{ string name; int y,m,d,bian; }a[1001]; int cmp(sb x,sb 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.bian>y.bian; } int main() { cin>>n; for(i=1;i<=n;i++){ cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d; a[i].bian=i; } sort(a+1,a+1+n,cmp); for(i=1;i<=n;i++) cout<<a[i].name<<endl; return 0; }
- 1
信息
- ID
- 457
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 198
- 已通过
- 54
- 上传者