Python程序:找到将n加和所需的最小斐波那契数?
假设我们有一个数字n;我们需要找到将n加和所需的最小斐波那契数。
因此,如果输入类似于n = 20,则输出将为3,因为我们可以使用斐波那契数[2, 5, 13] 来加和到20。
为了解决这个问题,我们将遵循以下步骤
res := 0
fibo := 一个包含值[1, 1]的列表
当fibo的最后一个元素 <= n时,执行以下操作
x := fibo最后两个元素的和
将x插入fibo
当n不为零时,执行以下操作
当fibo的最后一个元素 > n时,执行以下操作
从fibo中删除最后一个元素
n := n - fibo的最后一个元素
res := res + 1
返回res
让我们看一下以下实现以获得更好的理解
示例
class Solution: def solve(self, n): res = 0 fibo = [1, 1] while fibo[-1] <= n: fibo.append(fibo[-1] + fibo[-2]) while n: while fibo[-1] > n: fibo.pop() n -= fibo[-1] res += 1 return res ob = Solution() n = 20 print(ob.solve(n))
输入
20
输出
3
广告