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

โปรแกรมนับจำนวนต้นไม้การค้นหาไบนารีที่ไม่ซ้ำกันสามารถสร้างด้วยค่า 0 ถึง n ในPython


สมมติว่าเรามีตัวเลขหนึ่งตัว n เราต้องหาจำนวน BST ที่ไม่ซ้ำกันซึ่งเราสามารถสร้างขึ้นด้วยตัวเลขตั้งแต่ [0, n) หากคำตอบคือ mod ที่ใหญ่มาก ผลลัพธ์จะเป็น 10^9+7

ดังนั้นหากอินพุตเท่ากับ n =3 เอาต์พุตจะเป็น 5

โปรแกรมนับจำนวนต้นไม้การค้นหาไบนารีที่ไม่ซ้ำกันสามารถสร้างด้วยค่า 0 ถึง n ในPython

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตัวเลข :=1
  • ค่า :=n + 1
  • สำหรับฉันในช่วง 1 ถึง n ทำ
    • ตัวเลข :=ตัวเลข * n + ผม
    • ตัวเลข :=ตัวเลข mod m
    • denom :=denom * i
    • denom :=denom mod m
  • ตัวเลข :=ตัวเลข * (denom^(m-2)) mod m
  • คืนค่าจำนวน mod m

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

ตัวอย่าง

class Solution:
   def solve(self, n):
      m = 10 ** 9 + 7
      numer = 1
      denom = n + 1
      for i in range(1, n + 1):
         numer *= n + i
         numer %= m
         denom *= i
         denom %= m
         numer *= pow(denom, m-2, m)
      return numer % m
ob = Solution()
print(ob.solve(4))

อินพุต

4

ผลลัพธ์

14