1. 程式人生 > >dp基礎之劃分型數字解密

dp基礎之劃分型數字解密

#問題:有一段A-Z組成字母資訊串被加密數字串,加密方式A-1,B-2...給定加密後的數字串有多少種解密方式?

 

程式碼及註釋如下:

def get_case(s):
    #f[i]表示前i個數字可以解密成的種數
    n = len(s)
    if n==0:
        return 0
    f = [0 for x in range(n+1)]
    #初始
    f[0] = 1
    for i in range(1,n+1):
        #最後一個數字
        if s[i-1] >= 1 and s[i-1] <= 9:
            f[i] += f[i-1]
        #最後來兩哥數字
        if i>=2:
            res = s[i-1]*10+s[i-2]
            if res>=10 and res<=26:
                f[i] += f[i-2]
    return f[n]

s = [1,2]
print(get_case(s))
結果是:2