1 条题解

  • 0
    @ 2023-6-11 12:21:12

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int num[100],t,n;
    int check(int k)
    {
    for(int i=1;i<=k/3;i++) 
    {
    int flag=1;
    for(int L=1;L<=i;L++) 
    if(num[k-3*i+L]!=num[k-3*i+L+i]||num[k-3*i+L]!=num[k-3*i+L+i+i]) 
    {
    flag=0; 
    break;
    }
    if(flag) { return 0;} 
    }
    return 1;  
    }
    void dfs(int step)
    {
    if(step>n)
    {
    t++;
    return ;
    }
    for(int i=0;i<=1;i++)
    {
    num[step]=i;
    if(check(step)) 
    dfs(step+1);
    }
    }
    int main()
    {
    
    scanf("%d",&n);
    num[1]=0;
    dfs(2);
    printf("%d\n",t*2);
    
    return 0;
    }
    
    • 1

    信息

    ID
    2702
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者