0分求助!
  • 板块P1104 生日
  • 楼主lxl2012
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/25 11:23
  • 上次更新2024/1/25 11:58:29
查看原帖
0分求助!
1047961
lxl2012楼主2024/1/25 11:23

为何?!

#include<bits/stdc++.h>
using namespace std;
int n;
struct student{
    int years,months,days,id;
    char name[20];
};//结构体
student a[110];
bool operator >(student s1,student s2){
    if(s1.years != s2.years) return s1.years > s2.years;
    if(s1.months != s2.months) return s1.months > s2.months;
    if(s1.days != s2.days) return s1.days > s2.days;
    return s1.id > s2.id;
}//重新加载符
bool operator <(student s1,student s2){
    if(s1.years != s2.years) return s1.years < s2.years;
    if(s1.months != s2.months) return s1.months < s2.months;
    if(s1.days != s2.days) return s1.days < s2.days;
    return s1.id < s2.id;
}//重新加载符
int randint(int l,int r){
	return rand() % (r - 1 + 1) + 1;
}//随机
void quick(int l,int r){
	if(l >= r) return;
	int i = l,j = r;
	int s = randint(l,r);
	swap(a[l],a[s]);
	student tmp = a[l];
	while(i < j){
		while(i < j && a[j] > tmp) -- j;
		a[i] = a[j];
		while(i < j && a[i] < tmp) ++ i;
		a[j] = a[i];
	}
	a[i] = tmp;
	quick(l,i - 1);
	quick(i + 1,r);
}//随机快速排序
int main(){
	cin>>n;
	for(int i = 1;i <= n;i ++){
		cin>>a[i].name>>a[i].years>>a[i].months>>a[i].days;
		a[i].id = i;
	}//输入
	quick(1,n);//排序
	for(int i = 1;i <= n;i ++){
		cout<<a[i].name<<endl;
	}//输出
	return 0;
}

记录

2024/1/25 11:23
加载中...