分治演算法-求解棋盤覆蓋問題
分治演算法:
2分鐘學會棋盤覆蓋
假設有一個棋盤裡面有一個特殊格子被佔了,現在用L型骨牌去把其他沒有被佔滿的骨牌進行填充。
tr;行數
tc;列數
dr;特殊方格的行數
dc;特殊方格的列數
假設特殊方格在黃色區域,先查詢左上角1/4的方格
填充左上角的右下角方格
填充右上角的方格中的左下角
填充左下角,第一輪填充完成
其他的也是類似填充方式
void CheseBoard(int tr,int tc,int dr,int dc,int size)
{if (size == 1) return ;
int t = tile++;//用來記錄骨牌的型別的,一個L型骨牌有三個空格可以明顯看到屬於哪一個。
s = size/1;//通過分治演算法每次演算法棋盤的1/4.
if(dr < tr + s && dc < tc+s)//也就是特殊方塊現在的位置判斷是不是在左上角
CheassBpard(tr,tc,dr,dc,s);//在先填補其他部分
else {Board[tr+s-1][tc+s-1] = t;//填補右下角
CheassBoard(tr,tc,tr+s-1,tc+s-1,s);
}
if(dr < tr + s && dc >= tc+s)//也就是特殊方塊現在的位置判斷是不是在右上角
CheassBpard(tr,tc+s,dr,dc,s);//在先填補其他部分
else {Board[tr+s-1][tc+s] = t;//填補左下角
CheassBoard(tr,tc+s,tr+s-1,tc+s,s);
}
if(dr >= tr + s && dc < tc+s)//也就是特殊方塊現在的位置判斷是不是在左下角
CheassBpard(tr+s,tc,dr,dc,s);//在先填補其他部分
else {Board[tr+s][tc+s+1] = t;//填補右上角
CheassBoard(tr+s,tc,tr+s,tc+s-1,s);
}
if(dr >= tr + s && dc >= tc+s)//也就是特殊方塊現在的位置判斷是不是在右下角
CheassBpard(tr+s,tc+s,dr,dc,s);//在先填補其他部分
else {Board[tr+s][tc+s] = t;//填補左上角
CheassBoard(tr+s,tc+s,tr+s,tc+s,s);
}
相關文章
- 演算法題:頂點覆蓋問題演算法
- 棋盤完美覆蓋數(小規模原理實現)
- 演算法題系列:頂點覆蓋問題演算法
- 演算法學習之路|棋盤問題(博弈)演算法
- 線段覆蓋問題
- 使用貪心演算法解決集合覆蓋問題演算法
- 專案總結二:解決鍵盤覆蓋tableview的問題View
- poj 1321 棋盤問題 回溯 JavaJava
- 【離散優化】覆蓋問題優化
- 演算法問題基於蟻群演算法求解求解TSP問題(JAVA)演算法Java
- 分治演算法-眾數問題演算法
- zoj5093Battle ships【二分圖 棋盤覆蓋有斷點】BAT斷點
- 如何做線上問題覆盤
- 【完虐演算法】LeetCode 接雨水問題,全覆盤演算法LeetCode
- firefox覆蓋原來網頁的問題Firefox網頁
- 樹上最小點覆蓋的一類問題
- Android軟鍵盤彈出,覆蓋h5頁面輸入框問題AndroidH5
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- 馬踏棋盤演算法(騎士周遊問題)----遞迴與貪心優化演算法演算法遞迴優化
- 如何解決倉庫無線覆蓋的問題?
- resultMap 和 resultType 的欄位對映覆蓋問題
- 裸土覆蓋檢測演算法演算法
- Luogu P5089 元素週期表 / Codeforces 1012B Chemical table 題解 [ 並查集 ] [ 二分圖 ] [ 圖論建模 ] [ 棋盤覆蓋問題 ]並查集圖論
- 流浪方舟重點設計問題覆盤
- 演算法:利用分治演算法求解N個元素中的第M大元素演算法
- JS陣列push會覆蓋前面的資料問題JS陣列
- 利用遺傳學演算法求解工作分配問題演算法
- 遺傳演算法求解TSP問題(python版)演算法Python
- 一次線上OOM問題的個人覆盤OOM
- 使用hibernate的query查詢時覆蓋值的問題
- 演算法設計--眾數和重數問題(分治法)演算法
- 2020年10月24日 矩陣覆蓋問題矩陣
- 基於程式覆蓋資訊的資料庫核心問題定位工具資料庫
- 都100%程式碼覆蓋了,還會有什麼問題?
- 【演算法】2 由股票收益問題再看分治演算法和遞迴式演算法遞迴
- 覆盤 PHP 經典面試問題解決過程:上臺階問題PHP面試
- Android 軟鍵盤蓋住輸入框的問題Android
- Mysql索引覆蓋MySql索引