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

โปรแกรมหาจำนวนวิธีจัดเรียงตัวอักษร A และ B ที่ทุก prefix และ suffix มี B มากกว่า A ใน Python

กำหนดสตริงมี n ตัว A และ 2n ตัว B หาจำนวนการจัดเรียงที่ทุก prefix และทุก suffix มีจำนวน B ≥ จำนวน A

เช่น n=2 ผลลัพธ์ 4 เพราะมี 2 A และ 4 B การจัดเรียงที่เป็นไปได้: [BBAABB, BABABB, BBABAB, BABBAB]

วิธีแก้ปัญหา

  • ฟังก์ชัน solve รับ n
  • ถ้า n == 1: คืนค่า 1
  • ถ้า n == 2: คืนค่า 4
  • ถ้า n คี่: คืนค่า find(floor((n-1)/2))^2
  • มิฉะนั้น: คืนค่า find(floor(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))

Input

2

Output

4