題目描述:乙個只包含'a','b','c'的字串,如果存在某一段長度為3的連續子串中恰好'a','b','c'各有乙個,那麼這個字串就是純淨的,否則就是暗黑的。例如:
baacaaccbaaa連續子串"cba"中包含了'a','b','c'各乙個,所以是純淨的字串
aabbccaabb不存在乙個長度為3的連續子串中包含'a','b','c',所以是暗黑的字串
計算出長度為n的字串(只包含'a','b','c'),有多少個是暗黑的字串。
輸入描述:
輸入乙個整數n,表示字串長度(1<=n<=30)
輸出描述:
輸出乙個整數表示有多少個暗黑字串
輸入例子:
輸出:分析:定義dp1[i]為結尾兩個字元相同,長度為i的暗黑字串個數(aa,bb,cc,aaa,baa,caa等)
定義dp2[i]為結尾兩個字元不同,長度為i的暗黑字串個數(ab,ac,aab,aac等)
所求即為dp1[n]+dp2[n].
dp1[i]=dp1[i-1]+dp2[i-1] dp2[i]=dp1[i-1]*2+dp2[i-1] 時間複雜度為o(n).
**:#include
using namespace std;
int main()
int n;
cin>>n;
long long dp1[35];
long long dp2[35];
dp1[1]=0,dp1[2]=3;
dp2[1]=3,dp2[2]=6;
for(int i=3;i<=n;i++)
cout<
求解暗黑字串(網易2017秋招)
問題描述 乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的...
網易0912 暗黑字串
題目的大意 乙個字串只能由 a b c 三個字母組合而成 若在字串中如果 a b c 三個字元任意組合出現,則此字串為清澈的,否則為黑暗的。如 aabbccabaa 因為包含 cab 所以是清澈的 aabbccbcbba 則是黑暗的。輸入 字串的長度n 1 n 30 輸出 包含的黑暗字串的個數 樣例...
暗黑的字串
題目描述 乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的...