题目描述

我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

牛客网链接

思路

依旧是斐波那契数列
2 * n的大矩形,和n个2 * 1的小矩形
其中target * 2为大矩阵的大小
有以下几种情形:
1⃣️target <= 0 大矩形为<= 2 * 0,直接return 1;
2⃣️target = 1大矩形为2 * 1,只有一种摆放方法,return1;
3⃣️target = 2 大矩形为2 * 2,有两种摆放方法,return2;
4⃣️target = n 分为两步考虑:
第一次摆放一块 2 * 1 的小矩阵,则摆放方法总共为f(target - 1)

第一次摆放一块1 * 2的小矩阵,则摆放方法总共为f(target-2)
因为,摆放了一块1 * 2的小矩阵(用√√表示),对应下方的1 * 2(用××表示)摆放方法就确定了,所以为f(targte-2)

js代码

function rectCover(number)
{
// write code here
if (number <= 0) return 0
if (number === 1) return 1
if (number === 2) return 2
let prePre = 1
let pre = 2
let now
for (let i = 3; i <= number; i++){
now = prePre + pre
prePre = pre
pre = now
}
return now
}

最新文章

  1. HCP查询配置
  2. 《InsideUE4》-7-GamePlay架构(六)PlayerController和AIController
  3. php HTTP Auth
  4. HDFS读写数据块--${dfs.data.dir}选择策略
  5. 学习RxJS: 导入
  6. MyEclipse项目中的java文件的图标变成空心的问题
  7. iOS ARC下循环引用的问题 -举例说明strong和weak的区别
  8. db.class的实现类
  9. web攻击方式和防御方法
  10. Ubuntu操作系统下安装JDK、tomcat、mysql
  11. 201521123089 《Java程序设计》第3周学习总结
  12. Linux 系统裁剪笔记 软盘2
  13. MySql在生产环境中是用mysqldump还是xtrabackup备份和恢复数据
  14. 【XSY3154】入门多项式 高斯消元
  15. 叩响C#之门-继承
  16. Judy Beta 阶段整体计划
  17. jQuery基础2
  18. O(big oh) (big omega) (big theta)
  19. xml解析 使用dom4j操作xml
  20. 学习 已经登录windows的情况下获取windows的密码

热门文章

  1. 不论报任何错误 都是网络源有问题,安装spacemacs报错的解决方式
  2. js 数组去重、去空(收藏)
  3. [转帖]hive与hbase的联系与区别:
  4. 【LOJ】#2210. 「HNOI2014」江南乐
  5. java输入输出 -- Java NIO之套接字通道
  6. Dining(POJ-3281)【最大流】
  7. python学习-11 运算符2
  8. python之SQLite笔记
  9. (十三)Hibernate中的多表操作(3):单向多对多
  10. internal关键字