aleavf @ 2024-04-09 18:40:54
最后两个点过不去
#include<bits/stdc++.h>
using namespace std;
typedef struct{
string xingming;
int n;
int y;
int r;
}stu;
int e;
int main(){
cin>>e;
stu a[e];
for(int i=0;i<e;i++){
cin>>a[i].xingming>>a[i].n>>a[i].y>>a[i].r;
}
for(int i=0;i<e;i++){
for(int j=0;j<e-i-1;j++){
if(a[j].n>a[j+1].n){//先比较年
swap(a[j],a[j+1]);
}
if(a[j].n==a[j+1].n){//年相等,比较月
if(a[j].y>a[j+1].y){
swap(a[j],a[j+1]);
}
if(a[j].y==a[j+1].y){//月相等,比较日
if(a[j].r>a[j+1].r){
swap(a[j],a[j+1]);
}
}
}
}
}
for(int i=0;i<e;i++){
cout<<a[i].xingming<<endl;
}
}
by panrong @ 2024-04-09 19:22:43
@aleavf 生日相同时,输入靠后的先输出
by aleavf @ 2024-04-09 19:28:35
啊啊啊啊!!!!(没看题,以为先输入的先输出)
by aleavf @ 2024-04-09 19:34:43
我又来求救了,还是最后两个有问题
#include<bits/stdc++.h>
using namespace std;
typedef struct{
string xingming;
int n;
int y;
int r;
int x;
}stu;
int e;
int main(){
cin>>e;
stu a[e];
for(int i=0;i<e;i++){
cin>>a[i].xingming>>a[i].n>>a[i].y>>a[i].r;
a[i].x=i+1;
}
for(int i=0;i<e;i++){
for(int j=0;j<e-i-1;j++){
if(a[j].n>a[j+1].n){//先比较年
swap(a[j],a[j+1]);
}
if(a[j].n==a[j+1].n){//年相等,比较月
if(a[j].y>a[j+1].y){
swap(a[j],a[j+1]);
}
if(a[j].y==a[j+1].y){//月相等,比较日
if(a[j].r>a[j+1].r){
swap(a[j],a[j+1]);
}
else{
if(a[j].r==a[j].r&&a[j].x<a[j+1].x){
swap(a[j],a[j+1]);
}
}
}
}
}
}
for(int i=0;i<e;i++){
cout<<a[i].xingming<<endl;
}
}
by aleavf @ 2024-04-09 19:41:14
@panrong 改完之后还是错的
by panrong @ 2024-04-10 11:46:48
@aleavf 建议用sort排序
by zhangwenjun @ 2024-04-21 14:45:44
生日相同时,输入靠后的先输出