棋盘覆盖问题 分治法
来源:互联网 发布:水电工接单软件 编辑:程序博客网 时间:2024/05/16 17:49
#include<iostream>#include<math.h>using namespace std;int Board[105][105];static int tile=1; void ChessBoard(int tr,int tc,int dr,int dc,int size){if(size==1)return;int t=tile++;//L型骨牌号 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;//用t号L型骨牌覆盖右下角(该棋盘的特殊方格) 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,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); } }int main(){int k;while(cin>>k)//2^k*2^k的方格 {int size=pow(2,k)*pow(2,k); int x,y;cin>>x>>y;//特殊方格的坐标 Board[x][y]=0;ChessBoard(0,0,x,y,size);for(int i=0;i<size;i++){for(int j=0;j<size;j++){cout<<Board[i][j]<<"\t";}cout<<endl;}}return 0;}
0 0
- 分治法-棋盘覆盖问题
- 分治法:棋盘覆盖问题
- 棋盘覆盖问题 (分治法)
- 棋盘覆盖问题 - 分治法
- 棋盘覆盖问题 分治法
- 分治法---棋盘覆盖问题
- 棋盘覆盖问题【分治】
- 分治-棋盘覆盖问题
- 棋盘覆盖问题(分治)
- 棋盘覆盖问题 分治
- 使用分治法解决棋盘覆盖问题
- 利用分治法解决棋盘覆盖问题
- 分治法——棋盘覆盖问题
- 分治法--棋盘覆盖问题
- 分治法——棋盘覆盖问题
- 分治法,棋盘覆盖
- 分治法:棋盘覆盖
- 棋盘覆盖--分治法
- 为什么重写了equals(),还要重写hashCode()?
- uva10341
- python 地板除法(floor)和截断除法(trunc)
- U盘中毒了?教你如何删除System Volume Information这个顽固文件夹
- 07:打印ASCII码
- 棋盘覆盖问题 分治法
- 基于TCP/UDP的Server-Client
- 手把手教你搭建FastDFS集群(下)
- SVN查看工作副本信息
- make menuconfig配置及裁剪内核
- 08:打印字符
- 求职笔记-网络-tcp
- SVN查看工作副本信息
- 取模?取余?