字符序列(模拟)

#include<iostream>
using namespace std;
int n,sum=0;
int ans[15];
bool judge()
{
    int cnt=0;
    for(int i=3; i<=n; i++)
    {
        if(ans[i]==ans[i-2])
        {
            cnt++;
        } 
        else
        {
            cnt=0;
        }
        if(cnt==2)
        {
            return 0;
        }
    }
    return 1;
}
void dfs(int x)
{
    if(x == n + 1)
    {
        if(judge())
        {
            sum++;
        } 
           return;
    }
    for(int i=1; i<=3; i++)
    {
        ans[x]=i;
        dfs(x+1);
    }
}
int main()
{
    cin>>n;
    dfs(1);
    cout<<sum;
    return 0;
}
原文地址:https://www.cnblogs.com/Chri-K/p/13869308.html