網易0912 暗黑字串

2021-07-22 16:35:33 字數 1041 閱讀 8920

題目的大意:

乙個字串只能由『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...