[劍指offer]矩形覆蓋
思路:
用歸納法
n=1時,return 1
n=2時,return 2
n=2以上時,分兩步考慮
第一次擺放一塊21,佔了一格,所以有f(n-1)種擺法
第一次擺放一塊12,佔了兩格,因為上方擺放了一個12,下方就確定只能放12了,所以有f(n-2)種擺法
可得f(n)=f(n-1)+f(n-2),是一個斐波那契數列
實現:
和斐波那契數列一模一樣,只需要改一下起始數值,本題n=1時f(n)=1
public class Solution {
public int RectCover(int target) {
if(target<=2)return target;
int n1=1;
int n2=2;
int total=0;
for(int i=2;i<target;i++){
total=n1+n2;
n1=n2;
n2=total;
}
return total;
}
}
相關推薦
劍指offer-矩形覆蓋-斐波那契數列(遞歸,遞推)
思考 -1 com light logs src images 數列 斐波那契數 class Solution { public: int rectCover(int number) { if(number==0 || num
劍指offer-矩形覆蓋
新的 ber 產生 png nbsp 它的 log com ++ 看到第n個矩形相對與第n-1個是多了一行1*2的小矩形,這個新的小矩形能如何貢獻價值? 第一種情況,它直接被一個1*2的小矩形覆蓋,剩余部分如何填充就是沒有加新的小矩形之前的也就是和第n-1個矩形產生的結果
劍指offer矩形覆蓋
原題目連結:劍指offer矩形覆蓋 分類 劍指offer 遞迴 題意 用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 想法 n<=0 直接返回0了 n==1 有
[劍指offer]矩形覆蓋
思路: 用歸納法 n=1時,return 1 n=2時,return 2 n=2以上時,分兩步考慮 第一次擺放一塊21,佔了一格,所以有f(n-1)種擺法 第一次擺放一塊12,佔了兩格,因為上方擺放了一個12,下方就確定只能放12了,所以有f(n-2)種
牛客網 劍指offer-矩形覆蓋
問題描述: 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 問題分析: 看了別人通過的程式碼分析,有一個比較易
牛客網劍指offer-矩形覆蓋
題目描述我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?class Solution { public: int
[劍指offer] 矩陣覆蓋
itl class public ber over 情況 == 一個 offer 題目描述 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 感覺像是刷次數一樣。。 又是斐波那契 考慮
劍指offer____矩形覆蓋
我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。 請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? class Solution { public: int rectCover(int number) {
劍指offer--矩陣覆蓋
題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 程式碼實現(JAVA) public class Solution { public int RectCover(int target) {
劍指offer十之矩形覆蓋
rmi http 鏈接 isp image 覆蓋 ide tar 邊界 一、題目 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 二、解答思路 如果第一步選擇豎方向填充,則剩下
劍指offer 10矩形覆蓋
solution 矩形覆蓋 總結 建議 tar targe code ber ati 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法 java版本: public class Solution
劍指offer-10-矩形覆蓋
rect 方法 pro 拓展 返回 分析 -- 存在 應該 題目描述 我們可以用2×1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2×n的大矩形,總共有多少種方法? 題目分析 (參考牛客網Daniel Lee 分享的)用歸納法歸納如下, (1
【劍指Offer】08矩形覆蓋
題目描述 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 時間限制:1秒;空間限制:32768K 解題思路 經過分析,這還是一個斐波那契數列。 當n=1時,覆蓋方法f(1) 有固定1種;
劍指offer——(3)斐波那契數列&&跳臺階&&瘋狂跳臺階進階版&&矩形覆蓋
這兩道題 其實相同。 public class Solution { /* 一看到題目就想到用遞迴,結果雖然能通過,但時間還是太長 */ public int Fibonacci(int target) { return hhh(ta
劍指offer刷題之矩形覆蓋
題目描述 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? # -*- coding:utf-8 -*- class Solution: def rectCover(self,
劍指offer-10:矩形覆蓋
題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路 和跳臺階差不多 當第一次豎方向填充時,則規模縮小為target-1: 當第一次橫方向填充時,則規模縮小為target-2: 綜上分析:
劍指offer:矩形覆蓋
試題: 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 程式碼: 同樣是總結出規律,然後使用迭代,當n=1時,只有一種方法;當n=2時,只有兩種方法;當n=3時,只有三種方法。從n=3往回
劍指offer(10) 矩形覆蓋
題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2n的大矩形,總共有多少種方法?* 解題思路 小矩形可以橫放可以豎放,則第一步一共有兩種方法,豎放或橫放。在豎放之後的話,涉及到的就是用n-1個21的小矩形覆蓋2(n-1)的大矩形的方法。如果
【劍指offer{7-10}】斐波那契數列、跳臺階、變態跳臺階、矩形覆蓋
斐波那契數列、跳臺階、變態跳臺階、矩形覆蓋題目描述C++程式碼跳臺階題目描述C++程式碼變態跳臺階題目描述C++程式碼矩形覆蓋題目描述C++程式碼 注:思路均是動態規劃,用中間陣列dp存放計算值,如果
【劍指offer第十題】矩形覆蓋
題目描述 我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? n=0,0種; n=1,1種; n=2,2種; n=