字符序列
来源:互联网 发布:6120c软件下载 编辑:程序博客网 时间:2024/05/16 11:10
Problem Description
从三个元素的集合[A,B,C]中选取元素生成一个N个字符组成的序列,使得没有两个相邻字的子序列(子序列长度=2)相同。例:N=5时ABCBA是
合格的,而序列ABCBC与ABABC是不合格的,因为其中子序列BC,AB是相同的。
对于由键盘输入的N(1<=N<=12),求出满足条件的N个字符的所有序列总数。
对于由键盘输入的N(1<=N<=12),求出满足条件的N个字符的所有序列总数。
Input
输入有多组数据,每组数据只有一行为一个整数N。
Output
对于每组数据满足条件的N个字符的所有序列总数
Sample Input
4
Sample Output
72
//简单深搜#include<iostream>#include<stdio.h>#include<string>using namespace std;int cnt, n, a[15];void dfs(int x){ if(x > n) { cnt++; return; } int i; for(i = 1; i <= 3; i++) { a[x] = i; if(!(a[x - 3] == a[x - 1] && a[x - 2] == a[x]))//相邻的两个字符不等 dfs(x + 1); a[x] = 0; }}int main(){ int i, j, k; while(scanf("%d", &n) != EOF) { cnt = 0; memset(a, 0, sizeof(a)); if(n == 1) printf("3\n"); else if(n == 2) printf("9\n"); else if(n == 3) printf("27\n"); else { for(i = 1; i <= 3; i++)//枚举 { for(j = 1; j <= 3; j++) { for(k = 1; k <= 3; k++) { a[1] = i, a[2] = j, a[3] = k; dfs(4); } } } printf("%d\n", cnt); } } return 0;}
0 0
- 字符序列
- 字符序列
- 字符序列
- 字符序列
- 字符序列
- 字符序列
- 字符序列
- 字符序列
- C# 转义字符序列
- 三字符序列
- 转义字符序列
- 字符转义序列
- 字符组转译序列
- 字符转译序列
- [C] 三字符序列
- 【hihoCoder】回文字符序列
- 回文字符序列
- 回文字符序列
- Android_EditTextInputKontrol输入选择_141030
- VS调试技巧 之 attach to process
- java 父子实例的内存控制 继承变量和继承方法的区别
- C# 获取没有重复的随机数
- Linux网络编程之socket:select函数的并发限制与poll函数
- 字符序列
- 链表的创建,插入,删除,输出
- 解决“无法安装64位版本的office,因为在您的系统上找到了以下32位程序”
- 文《关于c++与java中文乱码问题分析与解决》中一个bug分析
- 计算概论(A) / 函数与字符串练习(2)2:DNA排序
- Android AIDL编程简例
- arcmap 设置线段的不同颜色(及其他转化)
- asp获取网页源代码并处理乱码的方法
- java基础--类与对象(封装)