棋盤覆蓋問題(遞迴與分治)

2021-10-01 15:43:46 字數 607 閱讀 1924

棋盤覆蓋問題。有乙個2k∗2k2k∗2k的方格棋盤,恰有乙個方格是黑色的,其他為白色。你的任務是用包含3個方格的l型牌覆蓋所有白色方格。黑色方格不能被覆蓋,且任意乙個白色方格不能同時被兩個或更多牌覆蓋。如圖所示為l型牌的4種旋轉方式。  

當乙個黑塊位於某一角時,可以解決乙個邊長為2的正方形匹配。可是這樣只解決了乙個正方形,想解決其他正方形,需要為其他每個正方形在某一角增加乙個黑塊,然後該問題可以針對不同的角分別進行分治。

#includeusing namespace std;

int title=1;

int board[8][8];

void chessboard(int tr,int tc,int dr,int dc,int size);

int main()

else

//右上棋盤

if(tr+s>dr && tc+s<=dc)

else

//左下棋盤

if(tr+s<=dr && tc+s>dc)

else

//右下棋盤

if(tr+s<=dr && tc+s<=dc)

else

}

棋盤覆蓋問題(分治,遞迴)

在乙個2 k 2 k個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。該棋盤為特殊棋盤,紅色的方格為特殊方格。棋盤覆蓋問題是指,要用圖2中的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。該問題就是在考察...

遞迴與分治之棋盤覆蓋問題

在乙個2 k 2 k個方格組成的棋盤中,若有乙個方格與其他方格不同,則稱該方格為一特殊方格,且稱該棋盤為乙個特殊棋盤。顯然特殊方格在棋盤上出現的位置有4 k種情形.因而對任何k 0,有4 k種不同的特殊棋盤。下圖所示的特殊棋盤為 k 2 時 16 個特殊棋盤中的乙個。在棋盤覆蓋問題中,要用下圖中 4...

分治與遞迴之棋盤覆蓋

棋盤覆蓋問題要求在2 k 2 k 個方格組成的棋盤中,給定任意乙個特殊點,實現對除該特殊點的棋盤實現全覆蓋。如圖所示 如下 include include using namespace std int title 1 設定l型骨牌編號 int board 2049 2049 void chessb...