分治與遞迴之棋盤覆蓋

2021-08-10 23:37:14 字數 615 閱讀 8910

棋盤覆蓋問題要求在2^k * 2^k 個方格組成的棋盤中,給定任意乙個特殊點,實現對除該特殊點的棋盤實現全覆蓋。如圖所示:

**如下:

#include 

#include

using

namespace

std;

int title=1;//設定l型骨牌編號

int board[2049][2049];

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

else

if(dr=tc+s)

else

if(dr>=tr+s&&dc//判斷特殊方格是否在棋盤左下角

chessboard(tr+s,tc,dr,dc,s);

}else

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

else

} int main(int argc, char** argv)

cout

0;}

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

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

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

棋盤覆蓋問題。有乙個2k 2k2k 2k的方格棋盤,恰有乙個方格是黑色的,其他為白色。你的任務是用包含3個方格的l型牌覆蓋所有白色方格。黑色方格不能被覆蓋,且任意乙個白色方格不能同時被兩個或更多牌覆蓋。如圖所示為l型牌的4種旋轉方式。當乙個黑塊位於某一角時,可以解決乙個邊長為2的正方形匹配。可是這樣...

棋盤覆蓋 分治和遞迴

棋盤覆蓋問題 time limit 1000ms,special time limit 2500ms,memory limit 32768kb total submit users 62,accepted users 26 problem 10432 no special judgement pro...