您的位置:首页 > 其它

hdu 2501 Tiling_easy version

2010-05-16 17:58 197 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2501

我们这样来分析:

当有1*n的网格,用1*1,1*2,1*3来填有多少种填法了,不难发现就是

f
= f[n-1] + f[n-2] + f[n-3];

这是1*n的网格,如果我有2*n的网格,也用1*2,2*2(他相当于两个1*2)

不也是这样吗

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

#include <iostream>

using namespace
std;
int
dig[40];
int
main()
{

dig[1]=1;
dig[2]=3;
for
(int i=3;i<=30;i++)
dig[i]=dig[i-1]+2*dig[i-2];
int
n;
while
(cin>>n)
{

while
(n--)
{

int
m;
cin>>m;
cout<<dig[m]<<endl;
}
}

return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: