問題描述:
在乙個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型骨牌 覆蓋乙個帶有乙個特殊方格的棋盤,特殊方塊上不能覆蓋骨牌,其他方塊上...