分治演算法-求解棋盤覆蓋問題
分治演算法:
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);
}
相關文章
- 棋盤覆蓋問題
- 棋盤覆蓋
- 分治法求解問題
- 棋盤問題
- 棋盤完美覆蓋數(小規模原理實現)
- 線段覆蓋問題
- 棋盤問題 POJ - 1321
- 暴力法求解“微信群覆蓋”?
- 使用貪心演算法解決集合覆蓋問題演算法
- 【離散優化】覆蓋問題優化
- 分治演算法-眾數問題演算法
- poj 1321 棋盤問題 回溯 JavaJava
- POJ1321棋盤問題(DFS)
- ssh問題之覆盤
- 【完虐演算法】LeetCode 接雨水問題,全覆盤演算法LeetCode
- 公園無線覆蓋維護問題
- firefox覆蓋原來網頁的問題Firefox網頁
- Luogu P5089 元素週期表 / Codeforces 1012B Chemical table 題解 [ 並查集 ] [ 二分圖 ] [ 圖論建模 ] [ 棋盤覆蓋問題 ]並查集圖論
- Android軟鍵盤彈出,覆蓋h5頁面輸入框問題AndroidH5
- 樹上最小點覆蓋的一類問題
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- 如何做線上問題覆盤
- [HAOI2007][洛谷P2218]覆蓋問題
- resultMap 和 resultType 的欄位對映覆蓋問題
- 如何解決倉庫無線覆蓋的問題?
- 2020年10月24日 矩陣覆蓋問題矩陣
- 遺傳演算法求解TSP問題(python版)演算法Python
- 裸土覆蓋檢測演算法演算法
- 馬踏棋盤演算法(騎士周遊問題)----遞迴與貪心優化演算法演算法遞迴優化
- 流浪方舟重點設計問題覆盤
- 利用遺傳學演算法求解工作分配問題演算法
- 演算法:利用分治演算法求解N個元素中的第M大元素演算法
- 矩形覆蓋
- bzoj1052: [HAOI2007]覆蓋問題(二分+搜尋)
- [經典演算法]海盜分金問題sql求解(貪心演算法)演算法SQL
- 基於免疫演算法的TSP問題求解matlab模擬演算法Matlab
- 蟻群演算法java實現以及TSP問題蟻群演算法求解演算法Java
- 基於程式覆蓋資訊的資料庫核心問題定位工具資料庫