两个方式 一种80 一种64 求助!!!
  • 板块P1104 生日
  • 楼主danaqi_
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/7/12 09:03
  • 上次更新2024/7/12 10:40:28
查看原帖
两个方式 一种80 一种64 求助!!!
689105
danaqi_楼主2024/7/12 09:03

rt
用的sort 80

#include<bits/stdc++.h>
using namespace std;
struct Node{
	char s[25];
	int y,m,d,id;
};
Node a[105];
bool cmp(Node x,Node y){
	if(x.y!=y.y)
		return x.y<y.y;
	if(x.m!=y.m)
		return x.m<y.m;
	if(x.d!=y.d)
		return x.d<y.d;
	return x.s>y.s;
}
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		scanf("%s%d%d%d",&a[i].s,&a[i].y,&a[i].m,&a[i].d);
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;++i){
		printf("%s\n",a[i].s);
	}
	return 0;
}

用的冒泡 64

#include<bits/stdc++.h>
using namespace std;
struct Node{
	char s[25];
	int y,m,d;
}a[105];
int main(){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		scanf("%s%d%d%d",&a[i].s,&a[i].y,&a[i].m,&a[i].d);
	}
	for(int i=1;i<n;++i){
		for(int j=1;j<=n-i;++j){
			if(a[j].y>a[j+1].y)
				swap(a[j],a[j+1]);
			else if(a[j].y==a[j+1].y){
				if(a[j].m>a[j+1].m)
					swap(a[j],a[j+1]);
				else if(a[j].m==a[j+1].m){
					if(a[j].d>=a[j+1].d)
						swap(a[j],a[j+1]);
				}
			}
		}
	}
	for(int i=1;i<=n;++i){
		printf("%s\n",a[i].s);
	}
	return 0;
}
2024/7/12 09:03
加载中...