用 Python 编写程序,找出吃 N 个橙子的最少天数
pythonserver side programmingprogramming更新于 2025/12/1 23:08:17
假设我们有一个数字 n。假设厨房里有 n 个橙子,我们每天吃一些橙子,遵循以下规则:1. 只吃一个橙子。2. 如果 n 是偶数,则吃 n/2 个橙子。3. 如果 n 能被 3 整除,则可以吃 2*(n/3) 个橙子。我们每天只能选择一个选项。我们必须找到吃 n 个橙子的最少天数。
因此,如果输入为 n = 10,则输出将为 4,因为
第 1 天吃 1 个橙子,10 - 1 = 9。
第 2 天吃 6 个橙子,9 - 2*(9/3) = 9 - 6 = 3。
第 3 天吃 2 个橙子,3 - 2*(3/3) = 3 - 2 = 1。
第 4 天吃最后一个橙子 1 - 1 = 0。
为了解决这个问题,我们将遵循以下步骤 −
定义一个函数 fun() 。这将需要 n
如果 n 在 memo 中,则
返回 memo[n]
如果 n<=2,则
返回 n
memo[n]:= 1 + (n mod 2+ fun(quotient of n/2)) 和 (n mod 3 + fun(quotient of n/3)) 的最小值
返回 memo[n]
从 main 方法,执行以下操作
memo:= a new map
返回 fun(n)
示例
让我们看看下面的实现以便更好地理解
def solve(n):
def fun(n):
if n in memo:
return memo[n]
if n<=2:
return n
memo[n]=1+min(n%2+fun(n//2),n%3+fun(n//3))
return memo[n]
memo={}
return fun(n)
n = 12
print(solve(n))
输入
7, [5,1,4,3]
输出
4
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

