棋盤覆蓋問題
問題描述:
在乙個2^k×2^k個方格組成的棋盤中,若有乙個方格與其他方格不同,則稱該方格為一特殊方格,且稱該棋盤為乙個特殊棋盤.顯然特殊方格在棋盤上出現的位置有4^k種情形.因而對任何
k≥0,有4^k種不同的特殊棋盤.
下圖–圖(1)中的特殊棋盤是當k=3時16個特殊棋盤中的乙個:
題目要求在棋盤覆蓋問題中,要用下圖-圖(2)所示的4種不同形態的l型骨牌覆蓋乙個給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋.
圖(2)
題目包含多組測試資料,輸入包含測試資料組數n,下面輸入n組資料,每組資料,包括邊長m和特殊方格的位置x,y。
input sample22
0 08
2 2output sample
case:1
0 1
1 1
case:2
3 3 4 4 8 8 9 9
3 2 2 4 8 7 7 9
5 2 0 6 10 10 7 11
5 5 6 6 1 10 11 11
13 13 14 1 1 18 19 19
13 12 14 14 18 18 17 19
15 12 12 16 20 17 17 21
15 15 16 16 20 20 21 21
**如下:
#include#include#include#define n 10000int board[n][n];//棋盤的布局
int team;//用方塊覆蓋,相當於分組
int loc;//key(x,y)的方位(返回值為1、2、3、4分別指1、2、3、4象限)
int witk(int m,int x,int y,int a,int b)
void cover(int m,int a,int b){
int i;
int j;
int x,y;
int n;
if(m==2){//若m==2,直接覆蓋
for(i=a;i2
for(i=a;i
分治法 棋盤覆蓋問題
棋盤覆蓋問題。有乙個2k 2k 的方格棋盤,恰有乙個方格是黑色的,其他為白色。你的任務是用包含3個方格的l型牌覆蓋所有白色方格。黑色方格不能被覆蓋,且任意乙個白色方格不能同時被兩個或更多牌覆蓋。如圖所示為l型牌的4種旋轉方式。分治三步驟 劃分問題 將 2 k 2k 的棋盤劃分為 2 k 1 2k 1...
分治法 棋盤覆蓋問題
在2k 2k的棋盤中有乙個特殊方格,特殊方格的位置共有4k種情況。下圖是22 22棋盤的一種情況 棋盤覆蓋問題要求用下圖中四種不同形態的l型骨牌覆蓋這乙個棋盤,並且l型骨牌之間不能重疊。每個l型骨牌佔三個格,拋去特殊方格,棋盤一共還剩4k 1個格,因此需要的方格數為 4k 1 3個。上例的棋盤經填充...
棋盤覆蓋問題(分治法)
有乙個2k 2k k 0 的棋盤,恰好有乙個方格與其他方格不同,稱之為特殊方格,並且稱該棋盤為一特殊棋盤。現在要用4種不同形狀的三格骨牌覆蓋除了特殊方格外的其他全部方格,並且任何兩個三格骨牌不能重疊。請給出一種覆蓋方案 特殊棋盤 k 3時 四種形狀的三格骨牌 使用二分法對整個棋盤進行劃分 分為四個象...