我最近遇到了下面这个问题:
一个字符串如果连续出现三个字母,其中一个是A,一个是B,
一个是 C。例如 BAAAACABCC 是被禁止的,但 AAABBBCCC 不是。
给你一个整数 n。你必须找出有多少个长度为 n 的字符串没有被禁止。 (n 将从 1 到 30)
示例:如果 n=2,则没有字符串是禁止的。所以输出是 9。
我尝试过但找不到有效的解决方案。我确实为此编写了一个强力算法,其中我检查了所有可能的此类字符串,但由于它是一个指数算法,所以它非常慢。你可以找到我的代码 here
有人可以为此指导我一个有效的算法,也许使用动态规划或任何其他方式。
谢谢
最佳答案
从数列来看:3,9,21,51,123 下一个数字是 123 * 2 + 51 = 297
关于c++ - 查找禁止字符串程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773831/