棋盘覆盖java代码
来源:互联网 发布:.top域名为什么便宜 编辑:程序博客网 时间:2024/06/15 22:42
public
class
QiPan {
/**
* =2^k。棋盘的规格为2^k*2^k
* */
public
static
void
ChessBoard(
int
tr,
int
tc,
int
dr,
int
dc,
int
size) {
if
(size ==
1
) {
return
;
}
int
t = title++;
// t表示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);
}
}
public
static
void
main(String[] args) {
// 假设特殊方格的位置为第三行第三列
board[
2
][
2
] =
0
;
ChessBoard(
0
,
0
,
2
,
2
, SIZE);
for
(
int
i =
0
; i < SIZE; ++i) {
for
(
int
j =
0
; j < SIZE; j++) {
System.out.print(board[i][j] +
" "
);
}
System.out.println();
}
}
static
final
int
SIZE =
4
;
static
int
[][] board =
new
int
[SIZE][SIZE];
static
int
title =
1
;
// title表示L型骨牌的编号
}
阅读全文
0 0
- 棋盘覆盖java代码
- 棋盘覆盖算法代码
- 棋盘覆盖 java实现
- 棋盘覆盖 java版本
- java 棋盘覆盖算法
- 分治算法---棋盘覆盖问题java代码实现
- 棋盘覆盖问题C++代码
- java解决棋盘覆盖问题
- java实现的棋盘覆盖
- JAVA大数_棋盘覆盖
- NYOJ 45 棋盘覆盖(java)
- python版棋盘覆盖问题核心代码
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- 棋盘覆盖
- leetcode 146. LRU Cache
- 【Scikit-Learn 中文文档】多类和多标签算法
- ElGamal 加密(利用Gmp计算)
- 【数据结构】队列和栈 Python 实现
- Vector
- 棋盘覆盖java代码
- Java【集合系列】-01-总体框架
- Codeforces 892B Wrath (递推)
- Qt_类型转换
- 22.开源项目--git
- 计算机视觉简介:历史、现状和发展趋势
- 欢迎使用CSDN-markdown编辑器
- 优达机器学习:学习曲线与模型复杂度
- 一位10年Java工作经验的架构师聊Java和工作经验