java解决棋盘覆盖问题
来源:互联网 发布:进销存加收银软件排行 编辑:程序博客网 时间:2024/06/05 20:46
/**
*
*/
package com.chessboard;
/**
* @author Administrator
*
*/
public class ChessBoard {
/**
* @param args
*/
final static int board_size = 4;
static int tial = 1;
static int [][]board = new int [board_size][board_size];
static void chessBoard(int tr,int tc,int dr,int dc,int size) {
if(size == 1)
return;
int s = size/2 ;
//System.out.println(s);
int t = tial++;
if(dr<tr+s && dc<tc+s) {//特殊方格在左上角棋盘中
chessBoard(tr,tc,dr,dc,s);
} else {//特殊方格不在此,则设置右下角方格为特殊方格
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) {
// TODO Auto-generated method stub
board[2][2] = 0;//特殊方格的位置
chessBoard(0,0,2,2,board_size);
for(int i=0;i<board_size;i++) {
for(int j=0;j<board_size;j++) {
System.out.print(board[i][j]+" ");
}
System.out.println();
}
}
}
*
*/
package com.chessboard;
/**
* @author Administrator
*
*/
public class ChessBoard {
/**
* @param args
*/
final static int board_size = 4;
static int tial = 1;
static int [][]board = new int [board_size][board_size];
static void chessBoard(int tr,int tc,int dr,int dc,int size) {
if(size == 1)
return;
int s = size/2 ;
//System.out.println(s);
int t = tial++;
if(dr<tr+s && dc<tc+s) {//特殊方格在左上角棋盘中
chessBoard(tr,tc,dr,dc,s);
} else {//特殊方格不在此,则设置右下角方格为特殊方格
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) {
// TODO Auto-generated method stub
board[2][2] = 0;//特殊方格的位置
chessBoard(0,0,2,2,board_size);
for(int i=0;i<board_size;i++) {
for(int j=0;j<board_size;j++) {
System.out.print(board[i][j]+" ");
}
System.out.println();
}
}
}
- java解决棋盘覆盖问题
- 用Java解决棋盘覆盖问题
- c++解决棋盘覆盖问题
- 使用分治法解决棋盘覆盖问题
- 用分治策略解决棋盘覆盖问题
- 递归分治解决棋盘覆盖问题
- 利用分治法解决棋盘覆盖问题
- 棋盘覆盖问题的递归解决
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- 棋盘覆盖问题
- ChessBoard棋盘覆盖问题
- c++解决棋盘覆盖问题
- POJ 1390 方块消除
- 【WinSocket】WinSocket 编程入门【精华】
- 转载自〈Compubin的空间〉Debug Assertion Failed! dbcore.cpp line:2979问题解决(VC++用ODBC访问SQLServer)
- 简单的js代码..
- java解决棋盘覆盖问题
- java为什么引入异常处理机制
- asp中内置对象的 session Respond方法
- WEBRTC
- ★戏子入画、一生天涯
- 在MFC中显示OpenCV的Mat图像矩阵 ShowMatImgToWnd(GetDlgItem(IDC_ShowImg) , matFrame);
- sgu 134 Centroid
- 单例模式(参考自《漫谈设计模式-从面向对象开始》)
- 部署 Ubuntu Server 开发虚拟机点滴 ubuntu-12.04.1-server