字符序列


题目:从三个元素的集合[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;
}