棋盘覆盖问题

来源:互联网 发布:淘宝购物流程图模板 编辑:程序博客网 时间:2024/06/08 13:19
#include<iostream>#include<iterator>#include<algorithm>using namespace std;/**棋盘覆盖问题*/static int t=0;void ChessBoard(int **map,int r,int l,int pr,int pl,int size){if(1==size) {return;}t++;int it = t;//左上角if(pr<r+size/2&&pl<l+size/2)ChessBoard(map,r,l,pr,pl,size/2);else{map[r+size/2-1][l+size/2-1]=it;ChessBoard(map,r,l,r+size/2-1,l+size/2-1,size/2);}//右上角if(pr<r+size/2&&pl>=l+size/2)ChessBoard(map,r,l+size/2,pr,pl,size/2);else{map[r+size/2-1][l+size/2]=it;ChessBoard(map,r,l+size/2,r+size/2-1,l+size/2,size/2);}//左下角if(pr>=r+size/2&&pl<l+size/2)ChessBoard(map,r+size/2,l,pr,pl,size/2);else{map[r+size/2][l+size/2-1]=it;ChessBoard(map,r+size/2,l,r+size/2,l+size/2-1,size/2);}//右下角if(pr>=r+size/2&&pl>=l+size/2)ChessBoard(map,r+size/2,l+size/2,pr,pl,size/2);else{map[r+size/2][l+size/2]=it;ChessBoard(map,r+size/2,l+size/2,r+size/2,l+size/2,size/2);}}int main(){int k=1,s;//棋盘的大小int r,l;//残缺方格的位置cin>>s;k<<=s;cin>>r>>l;int ** map = new int*[k];for (int i = 0; i < k; i++){map[i] = new int[k];}map[r][l] = 0;//运算ChessBoard(map,0,0,r,l,k);//输出结果for (int i = 0; i < k; i++){copy(map[i],map[i]+k,ostream_iterator<int>(cout," "));cout<<endl;}}

1 0
原创粉丝点击