分治法实现棋盘覆盖C++
来源:互联网 发布:apache jmeter 中文版 编辑:程序博客网 时间:2024/06/09 23:49
#include<iostream>using namespace std;const int size = 8;static int tile = 1;static int board[size][size] = { 0 };class CHESSBOARD{public:/*分治法实现棋盘覆盖*/static void chessBoard(int tr, int tc, int dr, int dc, int size){//若棋盘大小小于1,则返回if (1 == size){return;}//L型骨牌int t = tile++;//分割棋盘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{//否则,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{//L型骨牌覆盖board[tr + s][tc + s] = t;//递归遍历剩余棋盘空间chessBoard(tr + s, tc + s, tr + s, tc + s, s);}}//输出棋盘覆盖结果static void output(){for (int i = 0; i<size; ++i){for (int j = 0; j<size; ++j){cout << board[i][j] << "\t";}cout << "\n";}}};int main(){CHESSBOARD::chessBoard(0, 0, 3, 4, size);CHESSBOARD::output();return 0;}
阅读全文
0 0
- 分治法实现棋盘覆盖
- 分治法实现棋盘覆盖C++
- 分治法,棋盘覆盖
- 分治法:棋盘覆盖
- 棋盘覆盖--分治法
- 分治算法中棋盘覆盖问题(c语言实现)
- 分治法-棋盘覆盖问题
- 棋盘覆盖(分治法)
- 分治法:棋盘覆盖问题
- 棋盘覆盖问题 (分治法)
- 分治法之棋盘覆盖
- 棋盘覆盖问题 - 分治法
- 棋盘覆盖问题 分治法
- 分治法---棋盘覆盖问题
- 棋盘覆盖【递归分治法】
- 分治法解决棋盘覆盖
- 算法java实现--分治法--棋盘覆盖问题
- 0001-算法笔记分治法实现棋盘覆盖问题
- 眼底视网膜血管增强方法(三)形态学操作
- media的使用规则
- Web前端基础学习笔记(Html CSS Javascript)
- Session 与 Cookie的区别
- hdu 1200 To and Fro
- 分治法实现棋盘覆盖C++
- 一步一步实现android studio代码上传到github。
- LeetCode | 36. Valid Sudoku
- ZJCOJ qwb与二叉树 dp or 记忆化搜索
- 面试算法 输出数字矩形
- 609. Find Duplicate File in System
- 应该怎么做人
- 网页卷去的距离与偏移量
- Go接微信支付(更新中.)