注意闰年和去重问题
#include <cstdio>
#include <algorithm>
using namespace std;
struct Date{
int yy, mm, dd;
int num;
Date(){
yy = 3000;
}
}date[4];
int AA, BB, CC;
int day[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int toyy(int yy){
if(yy>=0 && yy<=59) return yy+2000;
return yy+1900;
}
bool isrn(int yy){
if((yy%4==0 && yy%100!=0) || yy%400==0) return true;
return false;
}
bool mmhf(int mm){
if(mm>=1 && mm<=12) return true;
return false;
}
bool ddhf(int yy, int mm, int dd){
yy = toyy(yy);
if(isrn(yy)){
day[2] = 29;
}else{
day[2] = 28;
}
if(dd>=1 && dd<=day[mm]) return true;
return false;
}
bool cmp(Date d1, Date d2){
if(d1.yy != d2.yy) return d1.yy < d2.yy;
if(d1.mm != d2.mm) return d1.mm < d2.mm;
if(d1.dd != d2.dd) return d1.dd < d2.dd;
}
int main(){
int tt[4];
scanf("%d/%d/%d", &tt[1], &tt[2], &tt[3]);
Date date[4];
if(mmhf(tt[2]) && ddhf(tt[1],tt[2],tt[3])){
date[1].yy = toyy(tt[1]);
date[1].mm = tt[2];
date[1].dd = tt[3];
}
if(mmhf(tt[1]) && ddhf(tt[3],tt[1],tt[2])){
date[2].yy = toyy(tt[3]);
date[2].mm = tt[1];
date[2].dd = tt[2];
}
if(mmhf(tt[2]) && ddhf(tt[3],tt[2],tt[1])){
date[3].yy = toyy(tt[3]);
date[3].mm = tt[2];
date[3].dd = tt[1];
}
sort(date+1, date+4, cmp);
for(int i=1; i<=3; i++){
if(date[i].yy != 3000){
if(date[i].yy!=date[i+1].yy || date[i].mm!=date[i+1].mm || date[i].dd!=date[i+1].dd)
printf("%d-%02d-%02d\n", date[i].yy, date[i].mm, date[i].dd);
}
}
return 0;
}