扩大
缩小

字符序列

today’s 回溯2333

问题描述

从三个元素的集合 [ABC][A,B,C] 中选取元素生成一个 NN 个字符组成的序列,使得没有两个相邻字的子序列(子序列长度=2)相同。例:N=5N=5时 ABCBA 是合格的,而序列 ABCBCABABC 是不合格的,因为其中子序列BCAB是相同的。

对于由键盘输入的 N(1N12)N(1≤N≤12),求出满足条件的 NN 个字符的所有序列和其总数。

输入格式

一行,一个整数 NN。

输出格式

一个整数,即满足条件的序列总数。

样例一

input

4

output

72

数据范围与约定

时间限制:          1s1s

内存限制: 256MB256MB

 

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 int ans;
 5 int d[20];
 6 void search (int n,int k=0){
 7     if(n==k) {
 8         ans++;
 9         return ;
10     }
11     for(char ss='A';ss<='C';ss++){
12         d[k]=ss;
13         bool aaa=true;
14         if(k>2 && d[k]==d[k-2] && d[k-1]==d[k-3]) aaa=false;
15         if(aaa) search (n,k+1);
16     }
17 }
18 int main(){
19     cin>>n;
20     search(n);
21     cout<<ans<<endl;
22     return 0;
23 }

 

posted @ 2018-03-14 16:53  luv_letters  阅读(480)  评论(0编辑  收藏  举报
AmazingCounters.com
博文导航目录