題目的大意:
乙個字串只能由『a』、『b』、『c』三個字母組合而成;若在字串中如果『a』『b』『c』三個字元任意組合出現,則此字串為清澈的,否則為黑暗的。如「aabbccabaa」因為包含「cab」,所以是清澈的;「aabbccbcbba」則是黑暗的。
輸入:字串的長度n(1 <= n <= 30)
輸出:包含的黑暗字串的個數
樣例:
輸入:2
3
輸出:9
21
思路:
定義dp1[i]為結尾兩個字元相同長度為i的暗黑字串個數將這些數分類,分為最後兩位相同的字串的個數,和最後兩位不同的字串的個數定義dp2[i]為結尾兩個字元不同長度為i的暗黑字串個數
答案所求就是dp1[n] + dp2[n]
分別考慮當前這個字元的安放方法,可以得到以下的狀態轉移方程:
dp1[i + 1] = dp1[i] + dp2[i]
dp2[i + 1] = 2 * dp1[i] + dp2[i]
n=3時,最後2個數相同的暗黑數是9個,最後2個不相同的暗黑數是12個,n=4時後面要再加乙個,
如果保證加之後,最後兩個字元相同,那就只能加n=3時的最後字母相同的字母9+12=21,如果保證加之後,最後兩個不同,還是暗黑數,如果前兩個相同,比如aa,可以後面加b,c,如果不同,比如ab,後面只能加c
9*2+12=30。
暗黑字串
題目 乙個只包含 a b c 的字串,如果存在一段長度為3的連續子串中,恰好有 a b c 各有乙個,那麼這個字串就是純淨字串,否則這個字串是暗黑的。例如 baacaaccbaaa這個字串就是暗黑的。例如 baacaaccbaaa這個字串就是純淨的,因為其連續子串中包含了 c b a 各乙個。你的任...
求解暗黑字串(網易2017秋招)
問題描述 乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的...
Python 網易筆試程式設計題(暗黑字串)
如下是16年網易秋招的筆試程式設計題 乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbcca...