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

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