《剑指Offer》刷题之矩形覆盖
我不知道将去向何方,但我已在路上! |
---|
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! |
-
题目:
我们可以用2*1
的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1
的小矩形无重叠地覆盖一个2*n
的大矩形,总共有多少种方法?比如n=3
时,2*3
的矩形块有3种覆盖方法:
-
示例:
示例 1 :
输入:4
返回值:5
- 代码1:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
if number == 0:
return 0
result = [1,1]
for i in range(1,number):
result.append(result[i] + result[i-1])
return result[number]
-
算法说明:
0——0
1——1
2——2
3——3
4——5
5——8
6——13
找规律,当前结果是前两个值的加和。 -
代码1:
class Solution {
public:
int rectCover(int number) {
if(number <= 2)
return number;
return rectCover(number-1) + rectCover(number-2);
}
};
- 算法说明:
递归算法。