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
廣告