棋盘覆盖问题
来源:互联网 发布:phpmyadmin同步数据库 编辑:程序博客网 时间:2024/06/05 15:11
题意:
经典棋盘覆盖问题
代码:
#include <bits/stdc++.h>using namespace std;const int MAXN=5e3;int n,posx,posy;int mp[MAXN][MAXN];int two[15];/*1:#***2:**#*3:*#**4:***#*/void show(){ for(int i=1;i<=two[n];i++){ for(int j=1;j<=two[n];j++) printf("%3d",mp[i][j]); puts(""); }}void solve(int k,int x,int y,int posx,int posy){ if(k==0) return ; int midx=x+two[k-1]; int midy=y+two[k-1]; if(posx<midx&&posy<midy){ mp[midx-1][midy]=mp[midx][midy-1]=mp[midx][midy]=1; solve(k-1,x,y,posx,posy); solve(k-1,midx,y,midx,midy-1); solve(k-1,x,midy,midx-1,midy); solve(k-1,midx,midy,midx,midy); }else if(posx>=midx&&posy<midy){ mp[midx-1][midy-1]=mp[midx-1][midy]=mp[midx][midy]=2; solve(k-1,x,y,midx-1,midy-1); solve(k-1,midx,y,posx,posy); solve(k-1,x,midy,midx-1,midy); solve(k-1,midx,midy,midx,midy); }else if(posx<midx&&posy>=midy){ mp[midx-1][midy-1]=mp[midx][midy-1]=mp[midx][midy]=3; solve(k-1,x,y,midx-1,midy-1); solve(k-1,midx,y,midx,midy-1); solve(k-1,x,midy,posx,posy); solve(k-1,midx,midy,midx,midy); }else{ mp[midx-1][midy-1]=mp[midx-1][midy]=mp[midx][midy-1]=4; solve(k-1,x,y,midx-1,midy-1); solve(k-1,midx,y,midx,midy-1); solve(k-1,x,midy,midx-1,midy); solve(k-1,midx,midy,posx,posy); }}int main(){ two[0]=1;for(int i=1;i<=12;i++) two[i]=two[i-1]*2; while(scanf("%d%d%d",&n,&posx,&posy)!=-1){ memset(mp,0,sizeof(mp)); mp[posx][posy]=-1; solve(n,1,1,posx,posy); show(); }}
阅读全文
0 0
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- ChessBoard棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 《ChessboardCoverage_棋盘覆盖问题》
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- MAX9286移植和测试
- Eclipse_neon添加插件Demo
- beta分布
- 你知道这样做就可以暂停超级表格的共享链接吗?
- vue v-if和v-slse结合使用
- 棋盘覆盖问题
- 9.17论文阅读笔记
- SpringMVC工作原理
- 深究标准IO的缓存
- C#动态调用C++编写的DLL函数
- Weblogic 12c启动安装程序
- angular js 购物车+删除+总价+总数+个数
- [RK3288][Android6.0] 调试笔记 --- 读取GPU当前频率方法
- 240. Search a 2D Matrix II