算法笔记(一)——Tri Tiling递推思路(杭电1143)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1143

思路分析:

       1) 很容易发现当n是奇数时,结果是0,。(面积法:3*n是一个奇数,奇数不可能由多个偶数1*2相加得到)

       2) 当n是偶数时,我们将3*n的区域用一条竖线分割成左右两个区域,右边区域记为3*k(2<=k<=n-2),而且右边区域不能被  竖线分割成两个区域。记右边区域的排列数为g(k),那么总的排列总数为g(k)*f(n-k)。当k=2时,我们通过画图可以发现    g(2)=3;当k>2时,通过画图可以发现g(k)恒等于2;(因为右边区域不可被竖线分割,当右边区域的最右边的那一列由一 个1*2的格子和2*1的格子铺好时,剩余区域的铺法都唯一确定了,而1*2和2*1的格子位置可以上下互换,故恒等于2)对 了,还有k=0的情况,也就是整个区域都不可以被竖线分割,那么铺法为2;所以我们可以发现一个规律:f(n)=3*f(n-2)+2*f(n-4)+2*f(n-6)+......+2*f(2)+2;同理,f(n-2)=3*f(n-4)+2*f(n-6)+.....+2*f(2)+2;两式相减可得 f(n)=4*f(n-2)-f(n-4)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值