zoukankan      html  css  js  c++  java
  • 01字符串

    【题目描述】

    输出仅有0和1组成的长度为n的字符串,并且其中不能含有3个连续的相同子串。

    【输入描述】

    输入文件只有一行一个整数n,表示有0和1组成的字符串的长度。0 <= n <= 30。

    【输出描述】

    输出文件只有一行一个整数,表示所有满足条件的字符串的个数。

    【样例输入】

    1

    【样例输出】

    2

    递推DP:

    源代码:
    
    #include<cstdio>
    int n,f[31];
    int main()
    {
        scanf("%d",&n);
        f[1]=2;
        f[2]=4;
        for (int a=3;a<=n;a++)
          f[a]=f[a-1]+f[a-2]; //后两位无非有两种情况:相同,不相同。若相同则无非为[1][1]或[2][2],则前面的排列方案无非为结尾为1的f[i-2]或结尾为2的f[i-2],总共为f[i-2]。若不同则无非结尾为[1]或[2],同理于上,总共为f[i-1]。也可看为Fabonacci数列的2倍数。
        printf("%d",f[n]);
        return 0;
    }

    深度优先搜索:

    源代码:
    
    #include<cstdio>
    int n,ans(0);
    void Solve(int Length,int Last,int Time) //普通的DFS。
    {
        if (Length==n) //完毕。
        {
            ans++;
            return;
        }
        if (Time==1) //第一次出现。
          Solve(Length+1,Last,2);
        Solve(Length+1,1-Last,1);
    }
    int main()
    {
        scanf("%d",&n);
        if (n) //避免0的情况。
        {
            Solve(1,1,1);
            Solve(1,0,1);
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    C++模板的声明与实现分离 编译错误详解
    C语言中数据类型的隐式转换
    UNIX 高手的 10 个习惯
    linux 信号量
    引用与数组
    Linux 的变量命名规则
    .bash_profile和.bashrc的区别(如何设置生效
    URAL 1053 Pinocchio
    URAL 1040 Airline Company
    URAL 1045 Funny Game
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5573395.html
Copyright © 2011-2022 走看看