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;
}
}
相關文章
- 線段覆蓋問題
- JS陣列push會覆蓋前面的資料問題JS陣列
- 【離散優化】覆蓋問題優化
- 矩陣連乘問題矩陣
- 演算法題:頂點覆蓋問題演算法
- 演算法題系列:頂點覆蓋問題演算法
- 都100%程式碼覆蓋了,還會有什麼問題?
- 分治演算法-求解棋盤覆蓋問題演算法
- firefox覆蓋原來網頁的問題Firefox網頁
- 樹上最小點覆蓋的一類問題
- 演算法題:矩陣鏈乘問題演算法矩陣
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- 如何解決倉庫無線覆蓋的問題?
- resultMap 和 resultType 的欄位對映覆蓋問題
- 演算法題系列:矩陣鏈乘問題演算法矩陣
- 國務院:2020年寬頻網路全面覆蓋城鄉
- 使用貪心演算法解決集合覆蓋問題演算法
- Chitika:2012年8月“山獅”釋出1月 系統覆蓋10%使用者
- 2023年10月美國主要社交平臺覆蓋率(附原資料表)
- 2020年南京要實現公共區域WiFi全覆蓋WiFi
- 利用瓊斯矩陣求解一般偏振問題矩陣
- 使用hibernate的query查詢時覆蓋值的問題
- 基於程式覆蓋資訊的資料庫核心問題定位工具資料庫
- 專案總結二:解決鍵盤覆蓋tableview的問題View
- 矩陣連乘問題 Python 動態規劃矩陣Python動態規劃
- #100. 矩陣乘法矩陣
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 動態規劃6:臺階問題和矩陣最小路徑問題動態規劃矩陣
- Mysql索引覆蓋MySql索引
- 最小圓覆蓋
- win10升級是覆蓋安裝嗎_win10升級怎麼覆蓋重新安裝Win10
- 程式碼覆蓋率與測試覆蓋率比較
- 洛谷OJ:P2764 最小路徑覆蓋問題(網路流)
- 病毒全球”勒索”歐亞企業網路安全保險覆蓋問題突出
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- lisp 習題 矩陣旋轉Lisp矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣