3 5棋盤覆蓋

2021-10-11 07:22:08 字數 972 閱讀 5444

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

輸入格式:

輸入三個數,分別是aa,bb,length.

輸出格式:

輸出整個棋盤。其中特殊方格填為0,然後鋪棋盤的順序為:先鋪四個子棋盤交界的部分,然後遞迴的對每個子棋盤按照左上,右上,右下,左下的順時針順序鋪滿棋盤。每一塊骨牌中三個方格數字相同,按照順序標號,即第一塊骨牌全標為1,第二塊骨牌全標為2,…,以此類推。輸出的每個數占4個場寬,右對齊。

輸入樣例:

1 1 4

表示:特殊格仔為(1,1),棋盤有4行4列。

輸出樣例:

0 2 3 3

2 2 1 3

5 1 1 4

5 5 4 4

表示:先鋪三個1(一塊l型骨牌),再鋪三個2,…,最後鋪三個5.

#include

using namespace std;

#define max 1025

int def[max]

[max]=;

static

int t=0;

void

chess

(int a,

int b,

int aa,

int bb,

int length)

else

//右上

if(aa=b+l)

else

//右下

if(aa>=a+l && bb>=b+l)

else

//左下

if(aa>=a+l && bbelse

}int

main()

}

棋盤覆蓋問題

source code include include include using namespace std const int n 1024 int board n n count void cover int sx,int sy,int cx,int cy,int size,int cx1,i...

棋盤覆蓋演算法

在乙個2k 2k個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤,顯然特殊方格在棋盤上出現的位置有4k種情形。因而對任何k 0,有4k種不同的特殊棋盤。特殊方格必位於4個較小子棋盤之一中,其餘3個子棋盤中無特殊方格。為了將這3個無特殊方格的子棋盤轉化為特殊...

棋盤覆蓋問題

問題 在乙個2k 2k k 0 個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為特殊方格。顯然,特殊方格在棋盤中可能出現的位置有4k種,因而有4k種不同的棋盤,圖4.10 a 所示是k 2時16種棋盤中的乙個。棋盤覆蓋問題 chess cover problem 要求用圖4.10 b 所示...