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

โปรแกรมหาจำนวนวิธีที่เราสามารถจัดเรียงตัวอักษรได้ โดยแต่ละคำนำหน้าและส่วนต่อท้ายมี Bs มากกว่า As ใน Python


สมมติว่าเรามีสตริงที่มีจำนวน n ของ A และจำนวน 2n ของ B เราต้องหาจำนวนการจัดเรียงที่เป็นไปได้ว่าในแต่ละคำนำหน้าและแต่ละส่วนต่อท้ายมีจำนวนของ B มากกว่าหรือเท่ากับจำนวนของ A

ดังนั้น ถ้าอินพุตเป็นเหมือน n =2 ผลลัพธ์จะเป็น 4 เพราะมี A สองตัวและ B สี่ตัว ดังนั้นการจัดเรียงที่เป็นไปได้คือ [BBAABB, BABABB, BBABAB, BABBAB]

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

  • กำหนดวิธีการแก้ จะใช้เวลา n
  • ถ้า n เหมือนกับ 1 แล้ว
    • คืน 1
  • ถ้า n เหมือนกับ 2 แล้ว
    • คืน 4
  • ถ้า n เป็นเลขคี่
    • ส่งคืน find(ชั้นของ (n-1)/2)^2
  • มิฉะนั้น
    • ผลตอบแทนการค้นหา(ชั้นของ n/2)^2

ตัวอย่าง

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

def solve(n):
   if n==1:
      return 1
   if n==2:
      return 4
   if n%2 != 0:
      return solve((n-1)//2)**2
   else:
      return solve(n//2)**2

n = 2
print(solve(n))

อินพุต

2

ผลลัพธ์

4