题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:个人觉得和跳台阶的思路一模一样,竖着放是2*1,相当于跳一级台阶,横着放是2*2,相当于跳两级台阶,最后是2*n,即需要跳n级台阶。
public class Solution {
public int RectCover(int target) {
if(target<=0) return 0;
if(target == 1) return 1;
int ret = 0;
int m = 1;
int n = 1;
while(target-->1){
ret = m+n;
m = n;
n = ret;
}
return ret;
}
}