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

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

最新推荐文章于 2023-06-11 02:44:43 发布

人总是要有梦想的QAQ 于 2020-05-23 19:36:50 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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

#include <iostream> using namespace std; char letter[3] = {'A', 'B', 'C'}; int n, number = 0; bool judge(string str) { if(str.size() < 4) { return true; } for (int i = 0; i < str.size() - 3; ++i) { if(str[i] == str[i + 2] && str[i + 1] == str[i + 3]) { return false; } } return true; } void substring(string str) { if(str.length() == n) { cout << str << ends; number++; return; } for (char i : letter) { str += i; if(judge(str)) { substring(str); } str = str.substr(0, str.length() -1); } } int main() { cin >> n; string str; substring(str); cout << number; }

123456789101112131415161718192021222324252627282930313233343536373839

相关知识

花匠(最长波浪子序列——DP + 权值线段树)
算法的艺术
luogu P1970 花匠 (NOIP)
基于COI序列快速鉴定花蓟马的DNA条形码芯片初探
一文解读时间序列基本概念
LeetCode习题整理(中等)I
龙葵UNUSUAL FLORAL ORGANS类SnUFO2基因C端序列的保守性对花发育的影响
题解
序列不包含任何匹配元素
【李刚

网址: 从三个元素的集合[A,B,C]中选取元素生成一个N个字符组成的序列,使得没有两个相邻字的子序列(子序列长度=2)相同。例:N = 5时ABCBA是合格的,而序列ABCBC与ABABC是不合格的,因为其 https://m.huajiangbk.com/newsview1080035.html

所属分类:花卉
上一篇: 台山都斛“稻稻菜”种植模式盘活农
下一篇: 甘肃省中医药全产业链规模达到80