HDU2045

作者: 费曼JW | 来源:发表于2019-04-28 16:57 被阅读0次

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

思路:n==1时,有3种涂法;n==2时,有6种涂法;n==3时,有6种涂法;当n>=4时就要分两种情况讨论:1.当第n-1个和第1个不是同种颜色,有ans(n-1)种涂法。2.当第n-1个和第1个是同种颜色,有2ans(n-2)涂法。即 ans(n)=ans(n-1)+2ans(n-2)
由于题目中n最大为50,我使用 __int64,printf时使用的占位符为%I64d。

代码:

#include <stdio.h>
int main()
{
    int n,i;
    while (scanf("%d", &n) != EOF)
    {
        __int64 ans[55];
        ans[1] = 3; ans[2] = 6;ans[3] = 6;
        for (i = 4; i <= n; i++)
        {
            ans[i] = ans[i - 1] + 2*ans[i - 2];
        }
        printf("%I64d\n", ans[n]);
    }
    return 0;
}


题外
探究 __int64 与 long long 类型的区别:



相关文章

  • HDU2045

    递推思路:记f(n)为n个格子的方法数目。在前面n-1个格子已经调好的情况下,填第n个格子。满足条件的n个格子的填...

  • HDU2045

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2045 思路:n=...

网友评论

      本文标题:HDU2045

      本文链接:https://www.haomeiwen.com/subject/ifadnqtx.html