美文网首页
矩形覆盖

矩形覆盖

作者: 打工这件小事 | 来源:发表于2018-11-11 23:43 被阅读0次

    《剑指offer》面试题10(题目二)相关题目:矩形覆盖

    题目:我们可以用2 x 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 x 1的小矩形无重叠的覆盖一个2 x n的大矩形,总共有多少种方法?

    思路:设2 x n 的大矩形的覆盖方法共有f (n)种,第一个2 x 1的小矩形去覆盖大矩形最左边的时候有2种选择:横着放和竖着放。当竖着放的时候,剩余2 x (n-1)的大矩形共有f(n-1)种方法覆盖;当2 x 1的小矩形横着放在左上角的时候,必须有一个2 x 1的矩形放在左下角,剩余2 x (n-1)的大矩形共有f(n-2)种方法覆盖。故总共的覆盖方法f(n)= f(n-1)+ f(n-2)。

    代码如下:

    public int rectangleCover(int n) {
        if (n <= 0) {
            return 0;
        } else if (n == 1) {
            return 1;
        } else if (n == 2) {
            return 2;
        } else {
            int num1 = 1;
            int num2 = 2;
            int temp = 0;
            for (int i = 3;i <=n;i++) {
                temp = num1 + num2;
                num1 = num2;
                num2 = temp;
            }
            return temp;
        }
    }
    

    相关文章

      网友评论

          本文标题:矩形覆盖

          本文链接:https://www.haomeiwen.com/subject/ssaffqtx.html