question:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法
resolution:
public int RectCover(int target) {
if(target == 1) return 1;
if(target == 2) return 2;
int result = 0;
if(target > 2){
result = RectCover(target - 1) + RectCover(target - 2);
}
return result;
}
总结:该题主要是构建关系式f(n) = f(n-1) + f(n-2) ,构建的时候第一步是关键(横放第一块小矩形或者竖直放两块小矩形),这时学会和前一项f(n-1)和f(n-2)进行关联。首先将f(n) 设置为长为n时的种类数。