2020年10月24日 矩陣覆蓋問題
題目描述
我們可以用2乘1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2乘1的小矩形無重疊地覆蓋一個2乘n的大矩形,總共有多少種方法?
比如n=3時,2乘3的矩形塊有3種覆蓋方法:
思路:
沒有明確方法的時候,最好的方法就是遞推找規律
-
n = 1 的時候
只能橫著覆蓋,一種
-
n = 2 的時候
可以橫著和豎著覆蓋,兩種
-
n = 3 的時候
第三級橫著覆蓋,用了一級,剩下 n = 2,有兩種覆蓋方法
第三季豎著覆蓋,用了兩級,剩下 n = 1,有一種覆蓋方法
總共有 3 種 -
n = 4 的時候
第 4 級橫著覆蓋,用了一級,剩下 n = 3,有三種覆蓋方法
第 4 級豎著覆蓋,用了兩級,剩下 n = 2,有兩種覆蓋方法
總共有 5 種方法 -
n = n 的時候
第 n 級橫著覆蓋,用了一級,剩下 n = n - 1,所以關注第 n - 1 種有幾種覆蓋方法
第 n 級豎著覆蓋,用了兩級,剩下 n = n - 2,所以關注第 n - 2 種有幾種覆蓋方法
總和為兩種情況的總和 -
從 n = 1 到 n = 4 的示意圖如下:
所以回答上面的問題,塗掉最後一級矩陣的時候,可以選擇使用橫向完成,也可以使用豎向完成,橫向塗剩下 n - 1 階,豎向塗剩下 n - 2 階
關注 n - 1 與 n - 2 時的塗法有幾種,這就是斐波那契數列
public class Solution {
public int RectCover(int target) {
if(target<=2){
return target;
}
int total1 = 1;
int total2 = 2;
int total = 0;
for(int i = 3; i<=target;i++){
total = total1 +total2;
total1 =total2;
total2 =total;
}
return total;
}
}
相關文章
- 線段覆蓋問題
- 棋盤覆蓋問題
- 【離散優化】覆蓋問題優化
- 公園無線覆蓋維護問題
- firefox覆蓋原來網頁的問題Firefox網頁
- 樹上最小點覆蓋的一類問題
- 分治演算法-求解棋盤覆蓋問題演算法
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- [HAOI2007][洛谷P2218]覆蓋問題
- resultMap 和 resultType 的欄位對映覆蓋問題
- 如何解決倉庫無線覆蓋的問題?
- 使用貪心演算法解決集合覆蓋問題演算法
- 矩陣連乘問題 Python 動態規劃矩陣Python動態規劃
- 利用瓊斯矩陣求解一般偏振問題矩陣
- 矩形覆蓋
- bzoj1052: [HAOI2007]覆蓋問題(二分+搜尋)
- 巨大的矩陣(矩陣加速)矩陣
- 鄰接矩陣、度矩陣矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 基於程式覆蓋資訊的資料庫核心問題定位工具資料庫
- 洛谷OJ:P2764 最小路徑覆蓋問題(網路流)
- 最小圓覆蓋
- Mysql索引覆蓋MySql索引
- 棋盤覆蓋
- 動態規劃_備忘錄法_矩陣鏈乘問題動態規劃矩陣
- 程式碼覆蓋率與測試覆蓋率比較
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 矩陣矩陣
- 每日一題@49矩陣置零每日一題矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 全球覆蓋 雜湊
- 線段覆蓋(挖
- leetcode:面試題 01.08. 零矩陣(陣列,中等)LeetCode面試題矩陣陣列
- Android軟鍵盤彈出,覆蓋h5頁面輸入框問題AndroidH5
- 部署無線覆蓋,安裝無線網橋裝置要注意的問題
- 矩陣和陣列矩陣陣列
- idea2022.1 檢視單測覆蓋率展示分支覆蓋率Idea
- 理解矩陣矩陣