美文网首页
面试题10(4):矩阵覆盖

面试题10(4):矩阵覆盖

作者: 潘雪雯 | 来源:发表于2020-05-10 15:20 被阅读0次

题目

用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用8个2*1的小矩形无重叠地覆盖一个2*8的大矩阵,总共有多少种方法?


image.png

解题思路

把2*8的覆盖方法记为f(8)。
用第一个2*1的小矩形去覆盖大矩形的最左边时有两种选择:竖着放或者横着放。
当竖着放的时候,右边还剩下2*7的区域,这种情形下的覆盖方法记为f(7)。
当横着放的时候,当2*1的小矩形横着放在左上角的时候,左下角必须和横着放一个2*1的小矩形,而在右边剩下2*6的区域,这种情况下的覆盖方法记为f(6).因此f(8)=f(7)+f(6)。

代码

class Solution {
public:
    int rectCover(int number) {
        int a = 1;
        int b = 2;
        int result;
        
        if(number == 0){
            result = 0;
        }
        else if(number == 1){
            result = 1;
        }
        else if(number == 2){
            result = 2;
        }
        else{
            for(int i = 3; i <= number; i++){
                result = a + b;
                a = b;
                b = result;
            }
        }
        return result;
    }
};

完整代码见Github

相关文章

  • 面试题10(4):矩阵覆盖

    题目 用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用8个2*1的小矩形无重叠地覆盖一个2*8的大矩阵,总共有...

  • 矩阵覆盖

    题目: 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,...

  • MATLAB基础语法

    矩阵### x=[1 2 3 4;5 6 7 8;9 10 11 12]%产生一个矩阵disp(x)%显示这个矩阵...

  • 矩形覆盖

    《剑指offer》面试题10(题目二)相关题目:矩形覆盖 题目:我们可以用2 x 1的小矩形横着或者竖着去覆盖更大...

  • 剑指 offer 笔记 10 | 矩阵覆盖

    题目描述我们可以用2乘1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2乘1的小矩形无重叠地覆盖一个2乘n的大矩...

  • matlab学习基础

    矩阵和数组: a = [1 2 3; 4 5 6; 7 8 10] a+10 sin(a) a*inv(a) [a...

  • openCV常用操作

    const cv = require('opencv4nodejs'); 创建矩阵 const rows = 10...

  • 剑指offer 动态规划 斐波拉契数列 跳台阶 变态跳台阶 矩阵

    剑指offer 动态规划 Python and C++ 1、斐波拉契数列2、跳台阶3、变态跳台阶4、矩阵覆盖 斐波...

  • Pascal小白|数字矩阵

    题目描述 矩阵中填数,当给N*N的矩阵,要求用程序填入下列形式的数:1 3 4 10 112 5...

  • 【Unity Shader入门精要学习】数学基础(二)

    矩阵(matrix) 一、矩阵相乘 一个最好记的方法就是,如A×B,A矩阵4×4,B矩阵4×3,则结果是一个4×3...

网友评论

      本文标题:面试题10(4):矩阵覆盖

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