棋盤覆蓋問題

2021-06-28 01:08:39 字數 2049 閱讀 2984

棋盤覆蓋問題

time limit:1000ms,special time limit:2500ms,memory limit:32768kb

total submit users:103,accepted users:40

problem 10432 :no special judgement

problem description

在乙個2k x 2k ( 即:2^k x 2^k )個方格組成的棋盤中,恰有乙個方格與其他方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用圖示的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有方格,且任何2個l型骨牌不得重疊覆蓋。

input

輸入檔案第一行是乙個整數t,表示有多少組測試資料,接下來是t組測試資料,共2t行,每組第一行為整數n,是2的n次冪(1<=n<=64),表示棋盤的大小為n*n,第二行是兩個整數,代表特殊方格所在行號和列號。

output

先輸出「case:i,然後按樣例輸出。資料間用製表符隔開(『t』),每行最後乙個資料後無製表符。

sample input

2

20 0

82 2

sample output

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

judge tips

要求遍歷順序按從左到右,從上到下。

ps:注意題幹的要求是遍歷順序從左到右,從上到下

code:

#include#include#include#includeusing namespace std;

const int maxn=1024;

int n,x,y;

int cur=0;

int board[maxn][maxn];

void chessboard(int sx,int sy,int len,int px,int py)else

if(px>=mx&&py=mx&&py>=my)else

}int main(){

int t;

cin>>t;

for(int kase=1;kase<=t;kase++){

memset(board,-1,sizeof(board));

cur=0;

cin>>n>>x>>y;

board[x][y]=0;

chessboard(0,0,n,x,y);

cout<

棋盤覆蓋問題

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

棋盤覆蓋問題

author tanky woo blog www.wutianqi.com 棋盤覆蓋問題 分治法2010 12 3 include using namespace std const int n 11 int board n n int tile 0 tr 棋盤左上角方格的行號 tc 棋盤左上角方...