我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
public class Solution {
public int RectCover(int target) {
if(target == 1) return 1;
else if(target == 2) return 2;
else{
int res = 0;
int a = 1;
int b = 2;
for(int i=3; i<=target; i++){
res = a + b;
a = b;
b = res;
}
return res;
}
}
}
target=1;return 1;
target=2;return 2;
target > 2;
分两种情况:第一种情况:第一个竖直放置 target-1种情况;
第二种情况:前两个位置水平放置,target-2种情况;
综上:return (target-1)+(target-2)。
即:斐波那契数列。
网友评论