用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