棋盘覆盖
来源:互联网 发布:关闭445端口 编辑:程序博客网 时间:2024/04/29 22:11
//棋盘覆盖#include<iostream>#include<cmath>using namespace std;int tile;int k;int board[100][100];void printChessBoard(int s){ for(int i=0;i<s;i++) { for(int j=0;j<s;j++) cout<<board[i][j]; cout<<endl; } }void chessBoard(int tx,int ty,int dx,int dy,int size){ if(size==1) return; int t=tile++; int s=size/2; if(dx<tx+s&&dy<ty+s)//left-top { chessBoard(tx,ty,dx,dy,s); } else { board[tx+s-1][ty+s-1]=t; chessBoard(tx,ty,tx+s-1,ty+s-1,s); } if(dx>=tx+s&&dy<ty+s)//right-top { chessBoard(tx+s,ty,dx,dy,s); } else { board[tx+s][ty+s-1]=t; chessBoard(tx+s,ty,tx+s,ty+s-1,s); } if(dx<tx+s&&dy>=ty+s)//left-bottom { chessBoard(tx,ty+s,dx,dy,s); } else { board[tx+s-1][ty+s]=t; chessBoard(tx,ty+s,tx+s-1,ty+s,s); } if(dx>=tx+s&&dy>=ty+s)//right-bottom { chessBoard(tx+s,ty+s,dx,dy,s); } else { board[tx+s][ty+s]=t; chessBoard(tx+s,ty+s,tx+s,ty+s,s); } }int main(){ int x,y; while(cin>>k>>x>>y) { tile=0; memset(board,0,sizeof(board)); chessBoard(0,0,x,y,k); printChessBoard(k); } return 0;}