题解 P1104 【生日】

· · 题解

蒟蒻第一次发题解 望大佬们海涵

看到这题的瞬间,我想到了一个鬼点子。

(翻了翻看到有类似题解,不过稍稍还是有点出入)

倘若把每个人的出生日期看做他的死亡日期。 把出生日期设为公元第一年一月一日的话……

那就计算他从公元 1.1.1 — xxxx.x.xx 一共有多少天就好了,然后排序输出

(每个人都是千年老妖,有点恐怖)

从公元到死亡的日子 = 年×365+月×30+日;

排序什么的随便啦(本蒟蒻冒泡

#include<bits/stdc++.h>
using namespace std;
struct sr{
    string name;
    int n,y,r;
}xs[120];//结构体,nian年,yue月,ri日。一目了然的变量名,哈哈
int main(void){
    int k,i,j,temp1,temp2;
    cin>>k;
    for(i = 0;i<k;i++)cin>>xs[i].name>>xs[i].n>>xs[i].y>>xs[i].r;//输入每个人的信息
    for(i = 0;i<k;i++){
        for(j = 0;j<k;j++){
            temp1 = xs[i].n*365+xs[i].y*30+xs[i].r;
            temp2 = xs[j].n*365+xs[j].y*30+xs[j].r;
            if(temp1<=temp2)swap(xs[i],xs[j]);      
        }//蒟蒻的冒泡排序
    }
    for(i = 0;i<k;i++)cout<<xs[i].name<<endl;//输出就好了
    return 0;
}