字符序列 解题报告
2015-08-13 09:17
239 查看
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【解题思路】
深搜;
重点是判断是否是合格的子序列;
因为子序列长度=2,还比较好处理;
【代码】
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,ans=0,a[10001]; void dfs(int dep) { int i; if (dep==n+1) { ans++; return; } for (i=1;i<=3;++i)//集合中只有A,B,C if (dep<4||i!=a[dep-2]||a[dep-1]!=a[dep-3])//本题的关键,判断是否合法,长度>=4的序列只需要当前点和dep-2点,dep-1点和dep-3 { //点是否都相同。还是比较好处理的。 a[dep]=i; dfs(dep+1); } return; } int main() { scanf("%d",&n); dfs(1); printf("%d",ans); return 0; }
相关文章推荐
- python字符编码
- Codeforces 300A Array
- Python 之 cPickle 实现 文件存取
- Android应用开发技巧之更方便的使用Sqlite
- 树链剖分模板+入门题 SPOJ - QTREE
- jvm调音
- C#绘制中国国旗的方法
- android studio f3怎么不跳转?
- 便宜真的没好货吗?戴尔闪存为存储经济性正名
- 几种计算机网络体系结构的对比分析
- HTTP协议(二)
- /etc/profile、~/.bash_profile等几个文件的执行过程
- 阿里DNS 223.5.5.5 223.6.6.6挂了,无法使用了
- django创建model
- 微软公司等数据结构+算法面试100题(第1-100题)全部出炉
- hdu 2516 斐波那契博弈
- LinkedHashMap遍历
- Windows下 Nginx+tomcat+memcached配置
- github入门
- 腾讯云、阿里云都“服”了,云容灾你还迟疑什么?