問題描述:遞迴與分治策略演算法,用 4 種不同形態的 l 型骨牌覆蓋乙個給定的特殊棋盤上除特殊方格以外的所有方格,且任何 2 個 l 型骨牌不得重疊覆蓋。輸入資料由程式執行後的介面中的編輯框中輸入遊戲規模,特殊方格的位置。將覆蓋的結果在視窗中顯示出來。
輸入輸出:
通過鍵盤輸入 k 值和特殊方格位置,輸出相應的覆蓋方案。輸出的形式可以是文字格式,也可以是圖形格式。
話不多說,直接上**,**如下:
#include #include int ncount = 0;
int matrix[100][100];
void chessboard(int tr,int tc,int dr,int dc,int size)else
if (dr < tr + s && dc >= tc + s )
else
if (dr >= tr + s && dc < tc + s)
else
if (dr >= tr + s && dc >= tc + s)
else
}int main()
printf("\n");
}return 0;
}
執行結果如下:
如有更好的想法,歡迎交流。
演算法 遞迴 棋盤覆蓋問題
1 最小情況 2 原問題與子問題同型 3 原問題的解可以用子問題的解來構造 在乙個2的k次方 x 2的k次方 此處數學公式的插入待修改 個方格的棋盤中,恰有乙個方格與其他方格不同,則稱該方格為特殊方格,在棋盤覆蓋問題中,要用l型骨牌 覆蓋乙個帶有乙個特殊方格的棋盤,特殊方塊上不能覆蓋骨牌,其他方塊上...
棋盤覆蓋問題的演算法實現
在乙個2 k 2 k個方格組成的棋盤中,有乙個方格與其它的不同,若使用以下四種l型骨牌覆蓋除這個特殊方格的其它方格,如何覆蓋。四各l型骨牌如下圖1 圖1 棋盤中的特殊方格如圖2 圖2實現的基本原理是將2 k 2 k的棋盤分成四塊2 k 1 2 k 1 的子棋盤,特殊方格一定在其中的乙個子棋盤中,如果...
遞迴特訓 棋盤覆蓋問題
解題思路 這一題使用遞迴的解法比較便於理解,這裡可以採用前面使用過的分治演算法,將整個棋盤分成四個部分。直接劃分後只有乙個部分會有黑色圖塊,而其餘三個部分則都是白色圖塊。這裡可以採取人為新增的方式。在其餘三個部分增加乙個骨牌覆蓋到三個部分,這樣每個區塊又都會包含黑色圖塊,然後分部分繼續求解。遞迴的返...