矩形覆盖(递归 循环)
来源:互联网 发布:网络课影视鉴赏答案 编辑:程序博客网 时间:2024/06/07 02:05
题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
分析:
(1)当 n < 1时,返回 0。
(2)当 n = 1时,只存在一种情况。
(3)当 n = 2时,存在两种情况。
归纳得, f(n) = f(n-1) + f(n-2), (n > 2)。
将题目改成1*3方块覆盖3*n、1*4方块覆盖4*n。
相应的结论应该是:
(1)f(n) = f(n-1) + f(n - 3), (n > 3)
(2)f(n) = f(n-1) + f(n - 4),(n > 4)
如果用1*m的方块覆盖m*n区域,递推关系式为f(n) = f(n-1) + f(n-m),(n > m)。
思路一:递推
public class Solution { public int RectCover(int target) { if (target <= 2) return target; int[] cover = new int[target + 1]; cover[0] = 0; cover[1] = 1; cover[2] = 2; for (int i = 3; i <= target; i++) cover[i] = cover[i - 1] + cover[i -2]; return cover[target]; }}
思路二:递归
public class Solution { public int RectCover(int target) { if (target <= 2) return target; else return RectCover(target - 1) + RectCover(target - 2); }}
阅读全文
0 0
- 矩形覆盖(递归 循环)
- 剑指offer: 矩形覆盖(循环与递归)
- 剑指offer_递归与循环---矩形覆盖
- 《剑指offer》刷题笔记(递归和循环):矩形覆盖
- 《剑指Offer》递归和循环——矩形覆盖
- 矩形覆盖-避免递归
- 矩形覆盖--递归实现
- 矩形覆盖——递归
- usaco window arear(递归求矩形覆盖面积)
- 递归与循环--斐波那契数列、跳台阶、矩形覆盖
- 矩形覆盖(java)
- 矩形覆盖(java版本)
- 矩形覆盖(剑指Offer)
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 文章标题
- PHP面试问题总结
- 常用的工业流程控制伪代码
- 程序员笔试之智力题(持续更新)
- ALM(QC)在汉化的情况下,网页登录时仍然显示为英文并报错的配置方法
- 矩形覆盖(递归 循环)
- 小程序的积累1
- websocket 、stomp关系
- 我理解的数字证书-1-公钥,私钥和数字证书
- Windows下通过bat批处理文件和vbs脚本实现守护进程
- activity blog
- matlab 教程 (一)
- leetcode题解-73. Set Matrix Zeroes
- C#导出数据到Excel的几种方法