题目描述
我们可以用 2 * 1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2 * 1 的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?
解题思路
n=1 :只有横放一个矩形,共 1 种解决办法。
n=2 :有横放一个矩形,竖放两个矩形,共 2 种解决办法。
n=3 :n=2 的基础上加 1 个横向,n=1 的基础上加 2 个竖向,共 3 种解决办法。
…
n=n :n=n-1 的基础上加 1 个横向,n=n-2 的基础上加 2 个竖向,共 f(n-1) + f(n-2) 种解决办法。
代码实现
import java.util.Scanner;
public class Problem10 {
public static int RectCover(int target) {
if(target <= 0)
return 0;
else if(target == 1 || target == 2)
return target;
else
return RectCover(target - 1) + RectCover(target - 2);
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
System.out.println(RectCover(n));
}
}