字符序列(characts)
问题描述:
从三个元素的集合[A,B,C]中选取元素生成一个N 个字符组成的序列,使得没有两个相邻的子序列(子序列长度=2)相同,例:N=5 时ABCBA 是合格的,而序列ABCBC 与ABABC 是不合格的,因为其中子序列BC,AB 是相同的。
输入N(1<=N<=12),求出满足条件的N 个字符的所有序列和其总数。
输入样例1:
4
输出样例1:
72
输入样例2:
2
输出样例2:
9
这道题可以用模拟的思想:给定一个字符串,对于当前这位和前面的第二位;这一位的前面的第一位和这一位前面的第三位,来进行比较。如果他们相等的话,就表明肯定是不符合的;如果他们不相等的话,就可以进行下一位的判断。
当然,这些是基于字符的操作。所以,还有一种更简便的算法:把A、B、C看作数字1、2、3,每次进行+1操作。如果+1后的数超过3,就可以从1开始继续加,最后用DFS串一下就可以解决了。
代码:
#include<cstdio> #include<cmath> #define</