厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子。吃掉一个橘子 如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2(n/3) 个橘子 每天你只能从以上 3 种方案中选择一种方案 请你返回吃掉所有 n 个橘子的最少天数 java语言编写
解析:这是一个动态规划问题,我们可以使用一个数组dp来存储到第i天为止吃掉所有橘子的最少天数。状态转移方程为:dp[i] = min(dp[i], dp[j] + 1),其中j表示前一天选择方案2的情况。
代码如下:
```java
public int minDays(int n) {
int[] dp = new int[n + 1];
dp[1] = 1;
for (int i = 2; i <= n; i++) {
if (i % 2 == 0) {
dp[i] = Math.min(dp[i], dp[i / 2] + 1);
}
if (i % 3 == 0) {
dp[i] = Math.min(dp[i], dp[i / 3 * 2] + 1);
}
}
return dp[n];
}
```
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!