棋盘覆盖

来源:互联网 发布:关闭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;}