http://oj.ecustacm.cn/problem.php?id=1328
#include <bits / stdc ++。h> using namespace std; struct node { int y、m、d; } s [ 10 ]; int cnt; int a、b、c; ボイド検査(int型 YY、INT MM、int型のDD){ int型月[ 13 ] = { 0、31、28、31、30、31、30、31、31、30、31、30、31 }; if(yy> = 60 ) yy + = 1900 ; それ以外の場合、 yy + = 2000 ; if(yy%400 == 0 ||(yy%4 == 0 && yy%100!= 0 )) month [ 2 ] ++ ; if(mm> 0 && mm < 13 ){ if(dd> 0 && dd <= month [mm]){ s [cnt] .y = yy; s [cnt] .m= mm; s [cnt ++]。d = dd; } } } bool cmp(node aa、node bb){ if(aa.y!= bb.y) return aa.y < bb.y; else if(aa.m!= bb.m) return aa.m < bb.m; リターン aa.d < bb.d。 } int main(){ scanf(" %d /%d /%d "、&a、&b、&c); check(c、a、b); check(c、b、a); check(a、b、c); sort(s、s +cnt、cmp); for(int i = 0 ; i <cnt; i ++ ){ if(i && s [i] .y == s [i- 1 ] .y && s [i] .m == s [i- 1 ]。 m && s [i] .d == s [i- 1 ] .d) 続行; printf(" %d-%02d-%02d \ n " 、s [i] .y、s [i] .m、s [i] .d); } 0を返し ます。 }