首页 > 其他 > 详细

递推 HDU 2569

时间:2016-12-30 21:47:01      阅读:227      评论:0      收藏:0      [点我收藏+]

考虑n-2 n-1 n

z[n] 代表n个块 可行方案

1  n-2 和n-1 同 3*z[n-2]

2  n-2和n-1不同 2*(z[n-1]-z[n-2]); 减一减 然后可能是其中一种 *2

z[n]=2*z[n-1]+z[n-2];

z[1]=3;
z[2]=9;

 

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>

using namespace std;
typedef long long ll;
#define MAXN 105

ll z[MAXN];

int main()
{
    z[1]=3;
    z[2]=9;
    for(int i=3;i<=40;i++)
        z[i]=2*z[i-1]+z[i-2];
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        printf("%lld\n",z[n]);
    }
    return 0;
}

 

递推 HDU 2569

原文:http://www.cnblogs.com/cherryMJY/p/6238234.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!