矩形覆盖——递归

来源:互联网 发布:php租房网站源码 编辑:程序博客网 时间:2024/05/18 01:56

题目描述:我们可以用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);        }    }}
0 0
原创粉丝点击