字符序列

来源:互联网 发布:淘宝女包店铺名字 编辑:程序博客网 时间:2024/06/06 02:52

Problem Description

从三个元素的集合[A,B,C]中选取元素生成一个N个字符组成的序列,使得没有两个相邻字的子序列(子序列长度=2)相同。例:N=5时ABCBA是合格的,而序列ABCBC与ABABC是不合格的,因为其中子序列BC,AB是相同的。
对于由键盘输入的N(1<=N<=12),求出满足条件的N个字符的所有序列总数。

Input

输入有多组数据,每组数据只有一行为一个整数N。

Output

对于每组数据满足条件的N个字符的所有序列总数

Sample Input

4

Sample Output

72
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define MAX(a,b) ((a)>(b) ? (a):(b))#define MIN(a,b) ((a)<(b) ? (a):(b))int ans,n,a[15];void search(int x){for(int i=1;i<4;i++){a[x]=i;if(x>3){if(a[x-1]*10+a[x]==a[x-3]*10+a[x-2]) continue;}if(x==n) ans++;else search(x+1);}}int main(){while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a));ans=0;if(n<4){if(n==1) printf("3\n");if(n==2) printf("9\n");if(n==3) printf("27\n");}else{search(1);printf("%d\n",ans);}}return 0;}


0 0