乙個只包含'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)
輸出描述:
輸出乙個整數表示有多少個暗黑字串
示例1
「高深」的動態規劃:
設a[i]為末尾兩字母結尾相同的暗黑字串,aa,bb,cc。
設b[i]為末尾兩字母結尾不同的暗黑字串,如ab,bc。
總暗黑字串 r[i]=a[i]+b[i] 。
如果a結尾新增乙個字母還是暗黑字串,填任意字母即可,3種填法。
如果b結尾新增乙個字母還是暗黑字串,只能從結尾兩字母中選出乙個,2種填法。
r[i]=3*a[i-1]+2*b[i-1]=2*r[i-1]+a[i-1] ( 因為r[i]=a[i]+b[i] )
得到末尾兩字母相同的暗黑字串a[i-1]:在r[i-2]的暗黑字串結尾加上與末尾相同的字母,只有一種填法。於是a[i-1]=r[i-2] 。
r[i]=3*a[i-1]+2*b[i-1]=2*r[i-1]+a[i-1] =2*r[i-1]+r[i-2]
r[i]=2*r[i-1]+r[i-2] 直接帶進去算就可以了。
暗黑的字串
題目描述 乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的...
暗黑字串
題目 乙個只包含 a b c 的字串,如果存在一段長度為3的連續子串中,恰好有 a b c 各有乙個,那麼這個字串就是純淨字串,否則這個字串是暗黑的。例如 baacaaccbaaa這個字串就是暗黑的。例如 baacaaccbaaa這個字串就是純淨的,因為其連續子串中包含了 c b a 各乙個。你的任...
演算法題 暗黑的字串
乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的連續子串包...