QBPAL - Đếm chuỗi đối xứng

Tác giả: khuc_tuan

Ngôn ngữ: Python

s = raw_input()
n = len(s)

F = [[-1 for i in range(n)] for j in range(n)]

def calc(a,b):
    if a>b:
        return 1
    if a==b:
        return 2
    if F[a][b]!=-1:
        return F[a][b]
    res = 0
    res = calc(a+1,b) + calc(a,b-1) - calc(a+1,b-1)
    if s[a]==s[b]:
        res += calc(a+1,b-1)
    F[a][b] = res
    return res

print calc(0,n-1) - 1

Download