题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:我是通过在草稿上画图可知大矩形2*1有一种方法,2*2时有两种方法,2*3有三种方法,2*4有四种五种方法,依次类推可知为斐波拉契数列。
java代码:
public class Solution {
public int RectCover(int target) {
if(target<=0){
return 0;
}
if(target==1){
return 1;
}
int temp1=1;
int temp2=1;
int result=0;
for(int i=2;i<=target;i++){
result=temp1+temp2;
temp1=temp2;
temp2=result;
}
return result;
}
}
python代码:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
if number<=0:
return 0
if number ==1:
return 1
temp1=1
temp2=1
for i in range(2,number+1):
result=temp1+temp2
temp1=temp2
temp2=result
return result