#include<bits/stdc++.h>
using namespace std;
int board[10000][10000];
int tile = 1;
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;
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] = t;
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] = t;
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] = t;
ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
}
}
void Print_Board(int size_){
for(int i=0;i<size_;i++){
for(int j=0;j<size_;j++){
cout<<board[i][j]<<" ";
}
cout<<endl;
}
}
int main(){
int tr = 0 ,tc = 0,dr, dc ,size_ ;
cout<<"input position(dr,dc)"<<endl;
cin>>dr>>dc;
cout<<"input size"<<endl;
cin>>size_;
ChessBoard(tr,tc,dr,dc,size_);
Print_Board(size_);
return 0;
}
04-22
1856