這是更多的算法評論: -假期和假期如何最大限度地利用假期?
問題:給定假期爲整數列表,0-364之間,和葉數N可用,如何最大限度地X天休假的天數,其中一假期是一個日期範圍,其中包含落入範圍內的假期並使用該範圍內其餘部分的假期。
我相信使用getMaxVacations(X,0,364,N)的下列僞代碼可能適用於一些小修復&優化,但我正在尋找其他方法來可視化問題,而不一定更快。
available_leaves (N) = 5
holidays = [7, 14, 20, 21, 35, 36]
getMaxVacation (X, start, end, N) {
if X = 0 return 0;
for (d : end to start + 1) {
for (leave : N to 1)
total = bestSingleVacation(start, d, leave) + getMaxVacation(X-1, d, end, N-leave);
if max < total
max = total
return max
}
bestSingleVacation(start, end, leaves_to_use) {
maxVacationSize = leaves_to_use
for (i : start; i < end-maxVacationSize; i++) {
for (j : i ; j < leaves_to_use) {
if (!holidays.contains(j)) j++; // use the leave
}
if (maxVacationSize < j-i) maxVacationSize = j-i;
}
return maxVacationSize;
}
我們這裏有最廣泛使用的算法 –
未來也將是有趣的合併隨着時間積累的假期。 –