您的位置:首页 > 其它

HDU 1143 Tri Tiling

2015-03-14 17:18 288 查看
#include"stdio.h"
int main()
{
int T,i,a[31]={1,0,3};
for(i=4;i<=30;i++)
a[i]=4*a[i-2]-a[i-4];
while(~scanf("%d",&T),T+1)
{
printf("%d\n",a[T]);
}
return 0;
}

递推题目

首先,每相差两个数,就有3种排列情况

然后再考虑的,拼在一起的情况,有2*(.....)省略号为2*(a[i-6] + a[i-4] +......+a[0]) (我假设从6开始)

a[i] = 3*a[i-2] + 2*(a[i-4] + a[i-6] +......+a[0]);

a[i-2]
= 3*a[i-4] + 2*(a[i-6] + a[i-8] +......+a[0]);

a[i-2]
-a[i-4]= 2*a[i-4] + 2*(a[i-6] + a[i-8] +......+a[0]);

所以,最后可以得到关系式

a[i]=4*a[i-2]-a[i-4];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: