[PDP]瓷砖3 * N – LATGACH3 – M3TILE
主题: HTTP://vn.spoj.pl/problems/M3TILE/
算上由3XN长方形骨牌2铺平了道路。×1?
输入包含多个测试用例两端 -1.
每个测试用例是一个整数n, 0 ≤N≤ 30.
对于每个测试用例, 在整数是在一排的答案.
输入样例
2
8
12
-1
样本输出
3
153
2131
时间: 1s
注意: N = 0,则返回结果 1.
这篇文章是为奇N,1单元的数量×1 奇怪的是,当你domio 2 伞, 它们的总和始终是偶数, 其结果是该问题的回报 0 没有办法把合适. 因此,我们只考虑n为偶数.
首先考虑的矩形3×2, 很容易发现 3 配售
在接下来的3矩形×4, 3 X 3 = 9 从 + 2 A => 11 从
在接下来的3矩形×6, 我们有以下的情况下:
如果调用F(到) 为矩形3xk的切片,我们有:
˚F(6) = F(2) * ˚F(6-2) + 2*[ ˚F(6-4) + ˚F(6-6) ] = 3*11 + 2*(3+1) = 41 从.
一般有:
˚F(到) = 3 *˚F(K-2) + 2*[ ˚F(K-4) + ˚F(K-6) + .. + ˚F(0) ]
=> ˚F(到) + ˚F(K-4) = 3 *˚F(K-2) + 3*˚F(K-4) + 2*[ ˚F(K-6) + ˚F(K-8) + .. + ˚F(0) ]
=> ˚F(到) + ˚F(K-4) = 3 *˚F(K-2) + ˚F(K-2) = 4 *˚F(K-2)
=> ˚F(到) = 4 *˚F(K-2) – ˚F(K-4)
因此,我们已发现下式的检索简述如下:
˚F(到) = 4 *˚F(K-2) – ˚F(K-4) 和f(0) = 1, ˚F(2) = 3
˚F(ñ) 是一个解决问题的办法. 安装以下 (时间: 0.01s 🙂 )
#include<stdio.h> int main() { int n,i; int f[31]={0}; f[0]=1; f[1]=0; f[2]=3; f[4]=11; for(i=6;i<=30;i+=2) f[i]=4*f[i-2] - f[i-4]; scanf("%d",&n); while(n!=-1) { printf("%dn",f[n]); scanf("%d",&n); } return 0; }
0 在回应 [PDP]瓷砖3 * N – LATGACH3 – M3TILE