博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
棋盘覆盖问题
阅读量:5046 次
发布时间:2019-06-12

本文共 1405 字,大约阅读时间需要 4 分钟。

在一个由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

 

附上代码:

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 int board[1025][1025]; //棋盘 7 static int tile=1; //所有L形骨牌从1开始连续编号 8 9 //形参(tr,tc)是棋盘中左上角的方格坐标10 //形参(dr,dc)是特殊方格所在的坐标11 //形参size是棋盘的行数或列数12 void ChessBoard(int tr,int tc,int dr,int dc,int size)13 {14 if(size==1) return; //递归边界15 16 int t=tile++; //L形骨牌牌号17 int s=size/2; //分割棋盘18 19 //覆盖左上角子棋盘20 if(dr
=tc+s)33 //特殊方格在此棋盘中34 ChessBoard(tr,tc+s,dr,dc,s);35 else36 {37 //此棋盘中无特殊方格,用t号L形骨牌覆盖左下角38 board[tr+s-1][tc+s]=t;39 //覆盖其余方格40 ChessBoard(tr,tc+s,tr+s-1,tc+s,s);41 }42 43 //覆盖左下角子棋盘44 if(dr>=tr+s&&dc
=tr+s&&dc>=tc+s)57 //特殊方格在此棋盘中58 ChessBoard(tr+s,tc+s,dr,dc,s);59 else60 {61 //此棋盘中无特殊方格,用t号L形骨牌覆盖左上角62 board[tr+s][tc+s]=t;63 //覆盖其余方格64 ChessBoard(tr+s,tc+s,tr+s,tc+s,s);65 }66 }67 68 int main()69 {70 int k,i,j,x,y;71 while(~scanf("%d",&k))72 {73 scanf("%d%d",&x,&y);74 k=pow(2,k);75 ChessBoard(0,0,x,y,k);76 for(i=0; i

 

转载于:https://www.cnblogs.com/pshw/p/5137130.html

你可能感兴趣的文章
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
1.jstl c 标签实现判断功能
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
超详细的Guava RateLimiter限流原理解析
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
Swift - RotateView
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>
django创建项目流程
查看>>
UIActionSheet 修改字体颜色
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
Spring注解之@Lazy注解,源码分析和总结
查看>>
多变量微积分笔记24——空间线积分
查看>>
Magento CE使用Redis的配置过程
查看>>
poi操作oracle数据库导出excel文件
查看>>