思路:定义一下每个月的最大天数,当天数大于该月最大值时,变为1进位,月大于12时变1进位。
算法证明:当天数大于该月最大值时,进入下一个月,天数变为1,月数+1,月数大于12时同理。
代码:
#include <iostream>
using namespace std;
int n;
int main()
{
int y,m,d;
cin >> n;
int a[13];
a[1] = a[3] = a[5] = a[7] = a[8] = a[10] = a[12] = 31;
a[4] = a[6] = a[9] = a[11] = 30;
a[2] = 28;
while (n -- )
{
cin >> y >> m >> d;
d += 1;
if(d > a[m])
{
d = 1;
m += 1;
if(m > 12)
{
m = 1;
y += 1;
}
}
printf("%d-%02d-%02d\n",y,m,d);
}
return 0;
}