遞迴 棋盤覆蓋

2021-06-30 16:34:39 字數 924 閱讀 3043

問題描述:

在乙個2^k*2^k 的方格組成的棋盤中,有乙個方格與其他方格不同,稱為特殊方格。

現在邀請4中不同的l型骨牌 覆蓋給定的棋盤除特殊方格外的所有方格。

例如:這是乙個k=2時的棋盤,特殊點座標為(0,1)。

四中l型骨牌如圖:

程式**:

#include #define key 8   //棋盤的階數

int ar[key][key]=; //二維陣列儲存的棋盤,初始值為全0

int tile=1; //標誌

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 }

void init(int x,int y) //初始化乙個點為特殊點

int main()

}

執行完結果。

遞迴 PTA棋盤覆蓋

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

棋盤覆蓋(遞迴的應用)

當 k 0 時,將2k 2k棋盤分割為4個 2k 1 2 k 1子棋盤 a 所示。特殊方格必位於 4個較小子棋盤之一中,其餘 3個子棋盤中無特殊方格。為了將這 3個無特殊方格的子棋盤轉化為特殊棋盤,可以用乙個 l型骨牌覆蓋這 3個較小棋盤的會合處,如 b 所示,從而將原問題轉化為 4個較小規模的棋盤...

演算法 遞迴 棋盤覆蓋問題

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