矩形覆盖
2017-01-14 11:16
162 查看
题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目解析:
对于n个矩形,如果我们选择第一个矩形选择竖着覆盖,则剩下一个2*(n - 1)的区域需要n-1个2*1的矩形来覆盖,如果第一个矩形横着覆盖,第二个矩形必然需要横着覆盖,所以剩下2*(n-2)的区域需要n-2个2*1的矩形覆盖的方法。所以这也是一个斐波那契数列式的问题。
代码如下:
public int RectCover(int target) {
int n = 3;
int n_1 = 3;
int n_2 = 2;
if (target <= 0){
return 0;
}else if (target <= 3){
return target;
}else {
for (int i = 4; i <= target; i++) {
n = n_1 + n_2;
n_2 = n_1;
n_1 = n;
}
return n;
}
}
相关文章推荐
- bzoj1185: [HNOI2007]最小矩形覆盖
- BZOJ 1185 HNOI2007 最小矩形覆盖 旋转卡壳
- 矩形覆盖
- 矩形覆盖
- UVA 10173 最小矩形覆盖(凸包+旋转卡壳)
- 矩形覆盖
- 面试题9(变形):矩形覆盖
- 2015 百度之星 1006 矩形面积 最小点覆盖矩形
- bzoj1185 [HNOI2007]最小矩形覆盖
- HDU 5251 矩形面积 (最小矩形覆盖 凸包+旋转卡壳 详解 推荐)
- 10.矩形覆盖
- 剑指offer(九,十) 变态跳台阶,矩形覆盖
- [HNOI2007]最小矩形覆盖
- 剑指offer-矩形覆盖
- CODEVS 1101 矩形覆盖 NOIP2002
- 刷题11 矩形覆盖问题
- 矩形覆盖
- 1390:矩形覆盖 @jobdu
- HDU4185Oil Skimming(行列匹配||棋盘匹配||黑白染色||1X2矩形覆盖)
- 剑指offer-矩形覆盖问题