HDU2045

2019-04-28  本文已影响0人  费曼JW

题目链接: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 类型的区别:



上一篇 下一篇

猜你喜欢

热点阅读