棋盘覆盖问题的算法设计
2012-02-02 10:24
316 查看
//tr:棋盘左上角方格的行号 //tc:棋盘左上角方格的列号 //dr:特殊方格所在的行号 //dc:特殊方格所在的列号 //size:棋盘的边长 int title = 0; 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 { 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 { 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 { Board[tr+s][tc+s] = t; ChessBoard(tr+s, tc+s, tr+s, tc+s, s); } }
相关文章推荐
- 计算机算法设计与分析之棋盘覆盖问题
- 算法分析与设计之棋盘覆盖问题
- 算法分析与设计之棋盘覆盖问题
- 高效算法设计_递归与分治(棋盘覆盖问题,循环日程表,巨人与鬼)
- 计算机算法设计与分析作业01:分治法求解大数乘法+L型骨牌的棋盘覆盖问题
- 【算法设计与分析】2、棋盘覆盖问题
- 计算机算法设计与分析之棋盘覆盖问题
- 算法竞赛入门经典 8.3.1 棋盘覆盖问题
- 集训第四周(高效算法设计)D题 (区间覆盖问题)
- 棋盘覆盖问题的算法实现
- 棋盘覆盖 算法分析、设计与实现(Java)
- 棋盘覆盖问题算法分析与实现(递归)
- 棋盘覆盖问题的算法实现
- 棋盘覆盖问题、半数集问题算法解析-C语言
- 算法[递归]-棋盘覆盖问题
- 算法竞赛入门经典:第八章 高效算法设计 8.9棋盘覆盖
- 集训第四周(高效算法设计)E题 (区间覆盖问题)
- 棋盘覆盖问题的算法实现
- 棋盘覆盖问题(算法分析)(Java版)
- 分治算法之 棋盘覆盖问题(完整代码实现)