铺磁砖,给定M*N的格子,用u*v的瓷砖去铺满,有多少种铺法

下面个人部分的理论还没有归纳给出,请先不要看,待我补充


首先是引用《很好的递推题:铺磁砖和走格子》的博客,下面是摘自这博客的某些内容。

*题一:用1 x 1和2 x 2的磁砖不重叠地铺满N x 3的地板,共有多少种方案?
样例输入:2
样例输出:3

博主@billhsu1024给出的答案是:


先设一个f[i]表示i*3的地板铺的方法,f[1]=1;f[2]=3;

i*3的地板数是这样得到的:(i-1)*3的地板比i*3的地板少的地方全铺上1*1的瓷砖,这有一种铺法;
或者在(i-2)*3的地板比i*3的地板少的地方铺上2*2的瓷砖和2个1*1的瓷砖,这有两种铺法;

所以得到递推式:f[i]=f[i-1]+2*f[i-2];

为了更好的理解上面的答案,下面有这样两个疑问:

    Q1:对于N=(i-2)的形式,为什么N=(i)是在前者的基础上,【1*3空白的地方(也即多出来的2*3的格子)中的铺法 】*【N=(i-1)时候的铺法】+2*3空白的地方(也即多出来的2*3的格子)中的铺法 】*【N=(i-2)时候的铺法= 【N=(i)的铺法】?

    Q2:再细分一点,为什么增加了2*3(1*3的也同理)空白的地方,相应的铺法就增加到(注意是增加到而不是增加了):

【2*3格子的 铺法】*【原来的铺法】。

    只要解决了Q2,Q1也就理解了。可能有人不理解上面的问题,我这样举个例子吧:

对于这个格子,上面给出的铺法是f(3)+2*f(1) = 5种。那么当我们增加2*3的空白地方的时候,格子就变成这样

了:,可以知道在空白的地方有这种铺法:,这就是2*f(1)的原因,然后就有疑问了:为什么不可以跨界铺呢?就是像这样子:,这不就是和前面的铺法不同,所以算是另一种铺法了吗?

    疑问的解答是:当使用这种铺法的时候,虽然增加了一种铺法,但是相应的,由于侵占了前面的黄色格子,原来3*3黄色的格子的铺法也要减少了,至于减少多少,会有某种关系,这里不再深入。我们只需要知道 当需要满足这条公式【1*3空白的地方(也即多出来的2*3的格子)中的铺法 】*【N=(i-1)时候的铺法】+【2*3空白的地方(也即多出来的2*3的格子)中的铺法 】*【N=(i-2)时候的铺法= 【N=(i)的铺法】的时候,空白的格子的瓷砖不能干扰到前面的铺法。

                                                                                                    

    注意:后面的子f之间不能存在包含关系。             

                                                                                                    

下面再举多一个牛客的例子强调一下包含关系:

   

步骤:

    1. 由于瓷砖可以横着和竖着放,我们可以把1*3和3*1看做是两种瓷砖。

    2. 构造不同的空白格子

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值