棋盤覆蓋問題
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
2sample output20 0
82 2
case:1judge tips0 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
要求遍歷順序按從左到右,從上到下。
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 棋盤左上角方...