题解 | #矩形覆盖#

矩形覆盖

http://www.nowcoder.com/practice/72a5a919508a4251859fb2cfb987a0e6

描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,从同一个方向看总共有多少种不同的方法?
比如n=3时,2
3的矩形块有3种不同的覆盖方法(从同一个方向看):
图片说明
输入描述:
2*1的小矩形的总个数n
返回值描述:
覆盖一个2*n的大矩形总共有多少种不同的方法(从同一个方向看)
示例1
输入:
0
返回值:
0
示例2
输入:
1
返回值:
1
示例3
输入:
4
返回值:
5

递归:

class Solution {
public:
    int rectCover(int number) {
        if (number < 3) return number;
        return rectCover(number-1) + rectCover(number-2); // 递归
    }
};

动态规划:

class Solution {
public:
    int rectCover(int number) {
        if (number < 3) return number;
        else {
            int dp1 = 3, dp2 = 2, dp;  // 动态规划
            for (int i = 4; i <= number; ++i) {
                dp = dp1 + dp2;
                dp2 = dp1;
                dp1 = dp;
            }
            return dp;
        }
    }
};
全部评论

相关推荐

05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务