字符序列(题解)

字符序列(characts)


问题描述:

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

输入N(1<=N<=12),求出满足条件的N 个字符的所有序列和其总数。

输入样例1:

4

输出样例1:

72

输入样例2:

2

输出样例2:

9

这道题可以用模拟的思想:给定一个字符串,对于当前这位和前面的第二位;这一位的前面的第一位和这一位前面的第三位,来进行比较。如果他们相等的话,就表明肯定是不符合的;如果他们不相等的话,就可以进行下一位的判断。

当然,这些是基于字符的操作。所以,还有一种更简便的算法:把A、B、C看作数字1、2、3,每次进行+1操作。如果+1后的数超过3,就可以从1开始继续加,最后用DFS串一下就可以解决了。

代码:

#include<cstdio>
#include<cmath>
#define</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值