1
0
已采纳
注意,这里有一个巨大大大大大大大大的坑,我也掉过,

每一个字母后面有一个空格,重要的事说三遍:空个空格空格!!!

望采纳,谢谢。

这样例太坑了,我试了1小时。
算了,核心来了。
if(t>n)
{
total++;
输出;
return ;
}
if(t>3)
{
for(char i='A';i<='C';i++)
{
if(a[t-2]!=i || a[t-3]!=a[t-1])
{
a[t]=i;
搜索
}
}
}
else
{
for(char i='A';i<='C';i++)
{
a[t]=i;
搜索
}
}
}
0
0
0
0
0
0
void search(int t)
{
if(t>n)
{
输出,计数
}
for (int i=1;i<=3;i++) // A,B,C三个字母循环。
{
if ((i!=result[t-2]) || (result[t-1] != result[t-3])) //使得没有两个相邻字的子序列(子序列长度=2)相同
{
result[t]= i;
search(下一个。)
}
}
}
栾峻岩在2018-01-30 18:06:20追加了内容
计数时ans/count是全局变量,每次输出要换行,最后输出ans/count(都可以)
思路:
A,B,C三个字母循环, 使得没有两个相邻字的子序列(子序列长度=2)相同 ,
例如:
abcde
--->> a b c d e(拆开)
从a到b判断。(从1到长度-3的字母判断)。
a!=c b!=d 满足! b!=d c!=e 也满足,则输出,并换行!!

