一週刷完劍指offer-10-矩形覆蓋
阿新 • • 發佈:2020-09-17
矩形覆蓋
1. 題目描述
我們可以用2 * 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 * 1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
2. 示例
比如n=3時,2*3的矩形塊有3種覆蓋方法:
3. 解題思路
還是找規律的一道題,歸根結底還是 斐波那契數列
如果是n=1 -> 1種
如果是n=2 -> 2種
如果是n=3 -> 3種
如果是n=4 -> 5種
注意,這裡Python使用遞迴方法也是不能通過的,超過執行所要求的的時間
4. Java實現
public class Solution { public int RectCover(int target) { if (target <= 0) return 0; if (target == 1) return 1; if (target == 2) return 2; return (RectCover(target - 1) + RectCover(target - 2)); } }
5. Python實現
# -*- coding:utf-8 -*- class Solution: def rectCover(self, number): # write code here if number <= 0: return 0 if number == 1: return 1 if number == 2: return 2 a, b = 1, 2 for i in range(number-2): a, b = b, a+b return b
如果您覺得本文有用,請點個“在看”