网易0912 暗黑字符串

题目的大意:

  一个字符串只能由‘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。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值