矩形覆盖——递归

题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路:
当n = 0时,有0种方法;
当n = 1时,有1种方法:一个2*1的小矩形横放;
当n = 2时,有2种方法:两个小矩形竖放或者横放;
当n = 3时,有3种方法:n-1时加一个横放的小矩形,n-2时加两个竖放的小矩形;
当n = 4时,有5种方法:同n = 3时;



得出递归式:f(n) = f(n - 1) + f(n - 2)

public class Solution {
    public int RectCover(int target) {
        if(target == 0){
            return 0;
        }else if(target == 1){
            return 1;
        }else if(target == 2){
            return 2;
        }else{
            return RectCover(target - 1) + RectCover(target - 2);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/yf9595/article/details/52728436