编程之美 4.2瓷砖覆盖地板问题

问题:

原有地板铺有 NxM 块正方形瓷砖老化了需要更新,但商店已经没有此类瓷砖了,只供应长方形的瓷砖,分析如何用 1x2 的瓷砖去覆盖 NxM 的地板呢?

分析:

1.N=1,M为偶数时,需要M/2块瓷砖

2.若NxM为奇数,则肯定不能用1x2的瓷砖去全部覆盖它。

(例如3x3只能放4块,3x5只能放7块,都剩余一个不能覆盖)

3.N与M中至少有一个为偶数,需要Nx(M/2)块瓷砖(这里假设M为偶数)

扩展问题:

1.求用1x2的瓷砖覆盖2xM的地板有几种方式?(设F(M)函数的返回值为摆放的种数)

1
b  
b  
2
bb 
   

第一块瓷砖就只有横或竖两种方式放置。

当以方式1,接下相当于要计算F(M-1).

当以方式2,接下来相当于要计算F(M-2).

可以得出递推式F(M)=F(M-1)+F(M-2),其中F(1)=1,F(2)=2。(M>2)

2.用1x2的瓷砖覆盖8x8的地板有多少种方式?如果是NxM呢?

①若地板只有1行,只有一种排法,就是全部横着排

②若地板有2行,即为扩展问题1

③大于3行,参考:

http://blog.csdn.net/limchiang/article/details/8619611

http://www.2cto.com/kf/201208/146894.html

3.用p x q的瓷砖能够覆盖N x M的地板吗?

①NxM可以被p x q整除,即地板是瓷砖所占面积的整数倍。

②N或M可以被p整除 && N或M可以被q整除。

转载于:https://www.cnblogs.com/Linkabox/p/3357326.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值