我試圖解決問題,要求查找在每個工作日的第13天在1990 + N-1年期間發生多少次。無限循環,同時計算日期
int weekDay = 1;
int week[] = {0,0,0,0,0,0,0};
N = 20;
for (int year = 1990; year <= 1990+N-1; year++){
for (int month = 1; month <= 12; month++){
int days = numberOfDays(year,month);
for (int day = 1; day <= days; day++){
if (day == 13)
week[weekDay] += 1;
weekDay += 1;
if (weekDay > 7)
weekDay = 1;
}
}
}
這是我的解決方案,但是我在一年中陷入了無限循環,似乎無法修復它。
編輯:numberOfDays函數。
int numberOfDays(int year, int month)
{
if (month == 2 && leapYear(year))
return 29;
else if (month == 2)
return 28;
if (month == 9 || month == 4 || month == 6 || month == 11)
return 30;
return 31;
}
哈哈,這是USACO – 2011-03-10 16:29:47
你還可以發佈numberOfDays功能嗎?如果它改變年份或N,則可能是解釋。 – ajuc 2011-03-10 16:30:25
@The GiG,它是。 – Marijus 2011-03-10 16:30:30