Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาจำนวนขั้นต่ำของตัวเลข Fibonacci เพื่อเพิ่มเป็น n ใน Python?


สมมติว่าเรามีตัวเลข 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

  • ผลตอบแทน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

ตัวอย่าง

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