Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで合計n個のフィボナッチ数の最小数を見つけるプログラム?


数nがあるとします。 nまで加算するために必要なフィボナッチ数の最小数を見つける必要があります。

したがって、入力がn =20の場合、出力は3になります。これは、フィボナッチ数[2、5、13]を使用して合計を20にすることができるためです。

これを解決するために、次の手順に従います

  • res:=0

  • fibo:=値が[1、1]

    のリスト
  • fiboの最後の要素<=n、do

    • x:=fiboの最後の2つの要素の合計

    • xをfiboに挿入

    • nがゼロ以外の場合、実行

      • fiboの最後の要素>n、do

        • fiboから最後の要素を削除する

      • n:=n-fiboの最後の要素

      • res:=res + 1

  • 解像度を返す

理解を深めるために、次の実装を見てみましょう

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

  1. 数の因子の最小合計を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 入力された数値を指定して、指定された数値の因子の最小合計を求めます。 ここでは、すべての因子とそれに対応する合計を計算し、それらの中から最小値を見つけます。 したがって、数の積の最小合計を見つけるために、積の素因数の合計を見つけます。 これが問題の反復実装です- 例 #iterative approach def findMinSum(num):    sum_ = 0    # Find factors of number and add to the sum

  2. フィボナッチ数のPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 −n番目のフィボナッチ数を計算するタスク。 フィボナッチ数のシーケンスFnは、以下に示す漸化式によって与えられます。 Fn =Fn-1 + Fn-2 シード値付き(標準) F0=0およびF1=1。 この問題には2つの解決策があります 再帰的アプローチ 動的アプローチ アプローチ1-再帰的アプローチ 例 #recursive approach def Fibonacci(n):    if n<0:       pri