有一个X的棋盘,恰好有一个方格与其他方格不同,称之为特殊方格。现在要用L形骨牌覆盖除了特殊方格以外的其他全部方格,骨牌可以任意选装,并且任何两个骨牌不能重叠。
#include <stdio.h>
#define MAX 1025
int k;
int x,y;
int board[MAX][MAX];
int tile =1;
void ChessBoard(int tr, int tc, int dr, int dc, int size);
int main(){
k=3;
x=3,y=6;
int size=1<<k;
ChessBoard(0,0,x,y,size);
for(int i=0;i<size;i++){
for(int j=0;j<size;j++)
printf("%4d",board[i][j]);
printf("\n");
}
}
void ChessBoard(int tr, int tc, int dr, int dc, int size) {
if(size==1)return;
int t=tile++;
int s=size/2;
if(dr<tr+s&&dc<tc+s){
ChessBoard(tr,tc,dr,dc,s);
} else{
board[tr+s-1][tc+s-1]=t;