棋盘覆盖问题(分治)
来源:互联网 发布:南京网络品牌推广 编辑:程序博客网 时间:2024/05/22 14:28
#include<iostream>#include<string>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int MAXN=105;int cnt;int mat[MAXN][MAXN];void chessBoard(int tr,int tc,int dr,int dc,int sz){ int s,t; if(sz==1) return; s=sz/2; t=++cnt; if(dr<tr+s&&dc<tc+s) { chessBoard(tr,tc,dr,dc,s); }else { mat[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 { mat[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 { mat[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 { mat[tr+s][tc+s]=t; chessBoard(tr+s,tc+s,tr+s,tc+s,s); }}int main(){ int sz; int dr,dc; while(cin>>sz) { cin>>dr>>dc; memset(mat,0,sizeof(mat)); chessBoard(0,0,dr,dc,sz); cnt=0; for(int i=0;i<sz;i++) { for(int j=0;j<sz;j++) { printf("%2d ",mat[i][j]); } printf("\n"); } } return 0;}
阅读全文
1 0
- 棋盘覆盖问题 (分治)
- 棋盘覆盖问题(分治)
- 棋盘覆盖问题【分治】
- 分治-棋盘覆盖问题
- 棋盘覆盖问题(分治)
- 棋盘覆盖问题 分治
- 棋盘覆盖问题(递归与分治)
- 棋盘覆盖问题(分治策略)
- 分治法-棋盘覆盖问题
- 分治法:棋盘覆盖问题
- 棋盘覆盖问题 (分治法)
- 典型分治问题 棋盘覆盖
- 棋盘覆盖问题 - 分治法
- 棋盘覆盖问题-递归分治
- 棋盘覆盖问题 分治法
- [分治,递归]棋盘覆盖问题
- 分治法---棋盘覆盖问题
- 问题8.3.1 棋盘覆盖问题(分治)
- nginx重启 failed (98: Address already in use)
- mysql中创建表删除表及表查询
- MD5加密技术(加盐)
- 数据库系统概念(机械工业出版社,第六版)复习——第十二章:事务管理
- javascript深入理解js闭包
- 棋盘覆盖问题(分治)
- 使用mybatis的一个坑
- 375. Guess Number Higher or Lower II
- iOS学习笔记-workspace添加工程时只有一个proj文件问题
- 一个屌丝程序猿的人生(五)
- AJAX 动态加载后台数据 绑定select
- 40. Combination Sum II
- php
- React.js 官方资料摘记:组合 VS 继承