我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形(java)。
1. 题目描述
我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
2. 解题思路
(1)直接用斐波那契的方法,就是知道一般前面两个相加等于后面一项的值。
(2)也可以用递推的方法解决。
3. 代码实现
(1)
public class Solution {
public int RectCover(int n) {
int number = 1;
int sum = 1;
if (n <= 0)
return 0;
if (n == 1 ) {
return 1;
}
while (n-- >= 2) {
sum += number;
number = sum - number;
}
return sum;
}
}
(2)递推的方法
public class Solution {
public int RectCover(int n) {
if(n <= 2)
return n;
int one = 1;
int two = 2;
int result = 0;
for(int i = 3; i <= n ; i++){
result = one + two;
one = two;
two = result;
}
return result;
}
}