有思路但是今天只剩下几十分钟了,有机会再做吧。
下面的代码超时了。// 5.13更新:这种贪心策略是不对的,不能优先选第三种策略。同时,最后一行的返回值minDays(n - 1)等于从0~n每一个值都要递归一遍,不可取。最后还要使用记忆化搜索。
/**
* @date 2024-05-12 23:11
*/
public class MinDays1553 {
@Deprecated
public int minDays(int n) {
int res = 0;
if (n <= 0) {
return 0;
}
if (n % 3 == 0) {
res = minDays(n - 2 * (n / 3)) + 1;
} else if (n % 2 == 0) {
res = minDays(n - n / 2) + 1;
} else {
return minDays(n - 1) + 1;
}
return Math.min(res, minDays(n - 1) + 1);
}
}