递归与分治策略-2.6棋盘覆盖
2017-10-07 20:37
453 查看
public class test2_6 { static int tile = 0; static int size = 4; static int[][] board = new int[size][size]; public static void chessBoard(int H,int L,int TH,int TL,int size){ if(size==1) return; int t = tile++; int s = size/2; //1.左上角 //特殊方格在此棋盘里 if(TH<H+s&&TL<L+s){ chessBoard(H,L,TH,TL,s); }else{//特殊方格不在此棋盘里 board[H+s-1][L+s-1] = t; chessBoard(H,L,H+s-1,L+s-1,s); } //2.右上角 //特殊方格在此棋盘里 if(TH<H+s&&TL>=L+s){ chessBoard(H,L+s,TH,TL,s); }else{//特殊方格不在此棋盘里 board[H+s-1][L+s] = t; chessBoard(H,L+s,H+s-1,L+s,s); } //3.左下角 //特殊方格在此棋盘里 if(TH>=H+s&&TL<L+s){ chessBoard(H+s,L,TH,TL,s); }else{//特殊方格不在此棋盘里 board[H+s][L+s-1] = t; chessBoard(H+s,L,H+s,L+s-1,s); } //4.右下角 //特殊方格在此棋盘里 if(TH>=H+s&&TL>=L+s){ chessBoard(H+s,L+s,TH,TL,s); }else{//特殊方格不在此棋盘里 board[H+s][L+s] = t; chessBoard(H+s,L+s,H+s,L+s,s); } } public static void main(String[] args) { int 4000 H=0,L=0,TH=0,TL=1; chessBoard(H,L,TH,TL,size); for(int i=0;i<size;i++){ for(int j=0;j<size;j++) System.out.print(board[i][j]+" "); System.out.println(); } } }
输出结果如下:
1 0 2 2 1 1 0 2 3 0 0 4 3 3 4 4
相关文章推荐
- 递归与分治策略之棋盘覆盖问题
- 递归分治策略——Java之棋盘覆盖问题解决
- 高效算法设计_递归与分治(棋盘覆盖问题,循环日程表,巨人与鬼)
- 实验一 分治与递归―棋盘覆盖问题 java实现
- 棋盘覆盖问题-递归分治
- [分治,递归]棋盘覆盖问题
- 分治与递归之棋盘覆盖
- 分治与递归:棋盘覆盖问题
- 棋盘覆盖(分治加递归)
- 棋盘覆盖--递归分治java实现
- 棋盘覆盖----分治和递归
- 递归与分治之棋盘覆盖问题
- 递归与分治之棋盘覆盖问题
- [递归与分治]棋盘覆盖问题
- 棋盘覆盖(递归分治问题)
- 递归分治解决棋盘覆盖问题
- 递归与分治之棋盘覆盖
- 棋盘覆盖_分治策略_java实现
- 算法系列(一):分治策略--棋盘覆盖
- 递归与分治之 棋盘覆盖