• 杭电 2047 阿牛的EOF牛肉串


    题目地址:

      http://acm.hdu.edu.cn/showproblem.php?pid=2047

      题目描述:

          有一个有字符E、O、F组成,长度为n的字符串,字符可重复,但是不能出现字符O与O相邻的情况,

          给定字符长度n,问符合要求的字符串总共有多少种?

      解题思路:

          设长度为n符合要求的字符串种数为f(n),这其中可分为两类:一类是以E或者F结尾的,另一类是以O结尾的。以E或者F结尾、长度为n、符合要求的字符串来源于以三种字符中的任何字符结尾长度为n-1符合要求的字符串后加一个字符E或者F,这样第一类的种数就是 f(n-1)*2;而以字符O结尾、长度为n、符合要求的字符串来源于以E或者F结尾、长度为n-1、符合要求的字符串后直接加一个字符O,而以E或者F结尾、长度为n-1、符合要求的字符串来源于以三种字符中的任何字符结尾、长度为n-2、符合要求的字符串后直接加一个字符E或者F,这一类的种数就是2*f(n-2),

          综上所述,f(n) = 2 * ( f(n-1) + f(n-2) );

          c语言代码如下:

          

    #include <stdio.h>
    #define MAXN 45
    int main()
    {
        int n, i;
        __int64 f[MAXN];
        f[1] = 3;
        f[2] = 8;
        for( i = 3; i < 40; i++ )
            f[i] = 2 * (f[i-1] + f[i-2]);
        /*for( i = 30; i < 40; i++ )
            printf( "%I64d
    ", f[i] );*/
        
        while( scanf( "%d", &n ) != EOF )
        {
            printf( "%I64d
    ",f[n] );
        }
        return 0;
    }
    View Code
  • 相关阅读:
    C# UserControl集合属性使用
    类属性的几个特性的含义
    C# 绘图时使用抗锯齿会多出一个像素
    Tooltip导致的无法访问已释放对象
    C#窗口闪烁问题解决
    窗口扩展风格
    动态字段列表实现及List<T>排序
    比较好用的Copy代码到博客VS扩展工具
    Dictionary与SortedDictionary
    VS2017 15.6之后支持直接反编译了
  • 原文地址:https://www.cnblogs.com/yizhanhaha/p/3234150.html
Copyright © 2020-2023  润新知