字符序列
题目:从三个元素的集合[A,B,C]中选取元素生成一个N个字符组成的序列,使得没有两个相邻字的子序列(长度=2)相同;对于由键盘输入的N(1<=N<=12),求出满足条件的N个字符的所有序列和其总数
参考数据:
输入:4
输出:72
注意:只限制相邻子序列
程序:
#include
using namespace std;
int N,sum=0,A[13];
void dfs(int x){
if(x>4){
if(A[x-1]==A[x-3]&&A[x-2]==A[x-4])
return;
}
if(x>N){
sum++;
return;
}
else{
for(int i=1;i<=3;i++){
A[x]=i;
dfs(x+1);
}
}
}
int main(){
scanf("%d",&N);
dfs(1);
printf("%d",sum);
return 0;
}