動態規劃(一)暗黑字串

2021-08-19 14:50:54 字數 884 閱讀 7732

1.題目描述

輸入乙個整數n,表示字串長度(1 ≤ n ≤ 30)
輸出乙個整數表示有多少個暗黑字串
3
21
思路:要想推出來f(n)與f(n-1)的關係,首先思考現在有兩個字元在新增乙個成為暗黑格仔,有兩種情況,

d(n-1)代表前兩個字元是相等的,那麼此時有三種情況abc都可以,3*d(n-1)

s(n-1)代表前兩個字元是不等的,那麼此時有二種情況2*s(n-1)

故此時推出f(n)=3*d(n-1)+2*s(n-1)  又因為f(n-1)=s(n-1)+d(n-1)故此時f(n)=2*f(n-1)+d(n-1)

現在需要找出d(n-1)與f(n)之間的關係

當s(n-1)時,有兩種情況,比如現在是ab 情況為aba,abb這兩種,此時有1/2的情況是相同的,故為s(n-1)

當d(n-1)時,有三種情況,比如現在是aa 情況為aab,aac,aaa這三種,此時有1/3的情況是相同的,故為d(n-1)

s(n)=s(n-1)+2*d(n-1)

d(n)=s(n-1)+d(n-1)

有前面可知f(n)=s(n)+d(n)故可以推出 d(n)=f(n-1)

故f(n)=2*f(n-1)+f(n-2)

**#暗黑字串

n=int(input("請輸入n的值:"))

dp=[i for i in range(n)]

dp[0]=3

dp[1]=9

for i in range(2,n):

dp[i]=2*dp[i-1]+dp[i-2]#推出來的公式

print(dp[n-1])

暗黑字串

題目 乙個只包含 a b c 的字串,如果存在一段長度為3的連續子串中,恰好有 a b c 各有乙個,那麼這個字串就是純淨字串,否則這個字串是暗黑的。例如 baacaaccbaaa這個字串就是暗黑的。例如 baacaaccbaaa這個字串就是純淨的,因為其連續子串中包含了 c b a 各乙個。你的任...

網易0912 暗黑字串

題目的大意 乙個字串只能由 a b c 三個字母組合而成 若在字串中如果 a b c 三個字元任意組合出現,則此字串為清澈的,否則為黑暗的。如 aabbccabaa 因為包含 cab 所以是清澈的 aabbccbcbba 則是黑暗的。輸入 字串的長度n 1 n 30 輸出 包含的黑暗字串的個數 樣例...

求解暗黑字串(網易2017秋招)

問題描述 乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的...