题目描述:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
🌻思路:假设用21的小矩形覆盖用28的矩形。28的覆盖方法记为f(8)。用小矩形覆盖大矩形的最左边有两种方式:1⃣️竖着覆盖,右边还有27的矩形,覆盖方法f(7)。2⃣️横着覆盖,右边还有2*6的矩形,覆盖方法f(6)。
综上所述:f(8) = f(7) + f(6);
public int RectCover(int target) {
if (target < 1) {
return 0;
}
if (target == 1) {
return 1;
}
if (target == 2) {
return 2;
}
return RectCover(target - 1) + RectCover(target - 2);
}