#include <iostream.h>
#define N 100
int board[N][N];
int t;
void chessboard(int tr,int tc,int dr,int dc,int size)
{
int m,s;
if(size==1) return;
m=++t;
s=size/2;
if(dr<tr+s&&dc<tc+s)
chessboard(tr,tc,dr,dc,s);
else
{
board[tr+s-1][tc+s-1]=m;
chessboard(tr,tc,tr+s-1,tc+s-1,s);
}
if(dr<tr+s&&dc>=tc+s)
chessboard(tr,tc+s,dr,dc,s);
else
{
board[tr+s-1][tc+s]=m;
chessboard(tr,tc+s,tr+s-1,tc+s,s);
}
if(dr>=tr+s&&dc<tc+s)
chessboard(tr+s,tc,dr,dc,s);
else
{
board[tr+s][tc+s-1]=m;
chessboard(tr+s,tc,tr+s,tc+s-1,s);
}
if(dr>=tr+s&&dc>=tc+s)
chessboard(tr+s,tc+s,dr,dc,s);
else
{
board[tr+s][tc+s]=m;
chessboard(tr+s,tc+s,tr+s,tc+s,s);
}
}
void print(int n)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout<<board[i][j]<<" ";
cout<<endl;
}
}
void main()
{
int tr,tc,dr,dc,size;
tr=0;
tc=0;
cout<<"请输入棋盘的大小:";
cin>>size;
cout<<"请输入特殊方块的行号:";
cin>>dr;
cout<<"请输入特殊方块的列号:";
cin>>dc;
board[dr-1][dc-1]=0;
chessboard(tr,tc,dr-1,dc-1,size);
print(size);
}