zoukankan      html  css  js  c++  java
  • 剑指offer_10:矩形覆盖

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

    思路:2*n的情况相当于2*(n-1)时放一块的情况加上2*(n-2)时放两块的情况

    1、动态规划

    public class Solution {
        public int RectCover(int target) {
            if(target<3) return target;
            int[] dp=new int[target+1];
            dp[0]=0;
            dp[1]=1;
            dp[2]=2;
            for(int i=3;i<=target;i++){
                dp[i]=dp[i-1]+dp[i-2];
            }
            return dp[target];
        }
    }
    

    2、动态规划优化

    public class Solution {
        public int RectCover(int target) {
            if(target<3) return target;
            int first=1;
            int second=2;
            for(int i=3;i<=target;i++){
                int sum=first+second;
                first=second;
                second=sum;
            }
            return second;
        }
    }
    
  • 相关阅读:
    数组_leetcode283
    数组_leetcode438
    数组_leetcode215
    数组_leetcode167
    数组_leetcode209
    数组_leetcode88
    数组_leetcode80
    数组_leetcode76
    数组_leetcode75
    数组_leetcode27
  • 原文地址:https://www.cnblogs.com/xyz-1024/p/14017130.html
Copyright © 2011-2022 走看看