กำหนดสตริงมี 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