棋盤覆蓋(遞迴的應用)

2021-07-13 11:15:24 字數 790 閱讀 2599

k>0

時,將2k×

2k棋盤分割為4個

2k-1×2

k-1子棋盤

(a)所示。

特殊方格必位於

4個較小子棋盤之一中,其餘

3個子棋盤中無特殊方格。為了將這

3個無特殊方格的子棋盤轉化為特殊棋盤,可以用乙個

l型骨牌覆蓋這

3個較小棋盤的會合處,如

(b)所示,從而將原問題轉化為

4個較小規模的棋盤覆蓋問題。遞迴地使用這種分割,直至棋盤簡化為棋盤1×

1。

#includeusing namespace std;

int tile=1;//骨牌編號

int board[100][100];//棋盤

/*tr棋盤左上角行號

tc棋盤左上角列號

dr當前特殊方格行號

dc當前特殊方格列號

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

//特殊方塊是否在左下角棋盤中

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

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

else }

int main()

{ int size;

coutint a,b;

cout>b;

chessboard(0,0,a,b,size);

for(int i=0;i



遞迴 棋盤覆蓋

問題描述 在乙個2 k 2 k 的方格組成的棋盤中,有乙個方格與其他方格不同,稱為特殊方格。現在邀請4中不同的l型骨牌 覆蓋給定的棋盤除特殊方格外的所有方格。例如 這是乙個k 2時的棋盤,特殊點座標為 0,1 四中l型骨牌如圖 程式 include define key 8 棋盤的階數 int ar...

遞迴 PTA棋盤覆蓋

在乙個2 k 2k k為正整數,k 10,length 2k 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格 其座標為aa,bb,分別代表行座標號和列座標號 以及有四種l型骨牌 如下圖 求用若干塊這種l型骨牌實現除該特殊點棋盤的全覆蓋。本題要求採用分治演算法做 輸入格式 輸入三...

演算法 遞迴 棋盤覆蓋問題

1 最小情況 2 原問題與子問題同型 3 原問題的解可以用子問題的解來構造 在乙個2的k次方 x 2的k次方 此處數學公式的插入待修改 個方格的棋盤中,恰有乙個方格與其他方格不同,則稱該方格為特殊方格,在棋盤覆蓋問題中,要用l型骨牌 覆蓋乙個帶有乙個特殊方格的棋盤,特殊方塊上不能覆蓋骨牌,其他方塊上...