用Python找出吃N个橙子的最少天数的程序

假设我们有一个数字 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。

示例

让我们看下面的实现来更好地理解

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找出吃N个橙子的最少天数的程序 的全部内容, 来源链接: utcz.com/z/335474.html

回到顶部