字符串只有可能有A、B、C三个字母组成,如果任何紧邻的三个字母相同,就非法。求长度为n的合法字符串有多少个?比如: ABBBCA是非法,ACCBCCA是合法的。
动态规划的思路——真的要枚举么? 
dp[i][0] : 长度为i的、最后两位不同的合法串的个数 
dp[i][1]: 长度为 i的、最后两位相同的合法串的个数 
递推: dp[i][0] = (dp[i-1][0] * 2 + dp[i-1][1] * 2) 
     dp[i][1] =  dp[i-1][0]
初值 
dp[1][0] = 3, dp[1][1] = 0 
结果 
dp[n][0] + dp[n][1] 
空间优化 
dp[i][0,1]只与dp[i-1][0,1]相关,可以省掉高维 
时间复杂度 
O(n)
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/u014427196/article/details/46760729