HDU2047 阿牛的EOF牛肉串(递推求解)

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2047

解题思路:

我们假设n个格子时又f(n)种方案。当前考虑第n个点,如果第n个点时非O那么就只能时E或者F。那么f(n)和f(n-1)的关系是f(n) = 2f(n-1),因为按照排列组合规律,前n-1个点已经确定时,第n个有几种方案就是总方案数乘几。

如果第n个点是O,那么n-1 一定不是O,只能是E或者F。这样前n-2个就受限制,如果前n-2个确定以后,前n-2,和n-1,n三部分组成的方案数是f(n) = 2f(n-2)

两种情况合起来就是f(n) = 2f(n-1) + 2f(n-2)

code:

#include <cstdio>

using namespace std;
typedef long long LL;

LL s[40+7];
int main()
{
    s[1] = 3;
    s[2] = 8;
    for(int i=3; i<41; i++)
    {
        s[i] = s[i-1] * 2 + s[i-2] * 2;
    }
    int n;
    while(scanf("%d", &n) != EOF)
    {
        printf("%lld\n", s[n]);
    }


    return 0;
}

 

全部评论

相关推荐

渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务