棋盘覆盖问题
2016-01-17 13:48
357 查看
在一个由2^k*2^k个方格组成的棋盘中,若恰有一个方格与其他方格不同,称该方格为特殊方格,且称该棋盘为特殊棋盘。
输入
输入有多组测试例。
对每一个测试例有两行,第一行是k(1<=k<=10),第二行是特殊方格所在的位置坐标x,y(0<=x,y<1024)。
输出
边长为2^k的方阵,特殊方格的编号为0,所有L形骨牌从1开始连续编号,数据之间的间隔是Tab。
输入样例
2
0 1
输出样例
2 0 3 3
2 2 1 3
4 1 1 5
4 4 5 5
附上代码:
输入
输入有多组测试例。
对每一个测试例有两行,第一行是k(1<=k<=10),第二行是特殊方格所在的位置坐标x,y(0<=x,y<1024)。
输出
边长为2^k的方阵,特殊方格的编号为0,所有L形骨牌从1开始连续编号,数据之间的间隔是Tab。
输入样例
2
0 1
输出样例
2 0 3 3
2 2 1 3
4 1 1 5
4 4 5 5
附上代码:
#include <iostream> #include <cmath> #include <cstdio> using namespace std; int board[1025][1025]; //棋盘 static int tile=1; //所有L形骨牌从1开始连续编号 //形参(tr,tc)是棋盘中左上角的方格坐标 //形参(dr,dc)是特殊方格所在的坐标 //形参size是棋盘的行数或列数 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 { //此棋盘中无特殊方格,用t号L形骨牌覆盖右下角 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 { //此棋盘中无特殊方格,用t号L形骨牌覆盖左下角 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 { //此棋盘中无特殊方格,用t号L形骨牌覆盖右上角 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 { //此棋盘中无特殊方格,用t号L形骨牌覆盖左上角 board[tr+s][tc+s]=t; //覆盖其余方格 ChessBoard(tr+s,tc+s,tr+s,tc+s,s); } } int main() { int k,i,j,x,y; while(~scanf("%d",&k)) { scanf("%d%d",&x,&y); k=pow(2,k); ChessBoard(0,0,x,y,k); for(i=0; i<k; i++) { for(j=0; j<k; j++) printf("%d\t",board[i][j]); printf("\n"); } } return 0; }
相关文章推荐
- onBackPressed()的用法
- 微信服务号报错{errmsg:config: invalid signature}
- 浅谈操作系统进程的引出
- 使用字符设备驱动
- shell脚本的结构和4种执行方式
- Xcode7 创建HTTP网络请求时出现bug
- 近200篇机器学习及深度学习的资料分享
- 【AngularJS】—— 1 初识AngularJs
- 代码高亮插件SyntaxHighlighter
- SpringMvc (二) 通过URL限定:URL表达式/模拟请求方法/注解绑定方法参数/入参方式
- 《Effective Modern C++》翻译--条款4:了解如何查看推导出的类型
- 《Effective Modern C++》翻译--条款4:了解如何查看推导出的类型
- 日志分析-Web
- 查看系统(硬件)信息
- p243 7题
- 4.2 不确定性推理
- wpa_supplicant工具
- 有趣的++i和i++
- linux系统安装须知
- HTML5-Web Messaging