棋盘覆盖_分治策略_java实现

原创 2012年03月22日 18:10:12
public class qipan {
static int MAX_SIZE=16;
static int board[][]=new int[MAX_SIZE][MAX_SIZE];
    static int tile=0;
public void chessboard(int tr,int tc,int dr,int dc,int size){
   if(size==1)
    return;
   
   int t=tile++,s=size/2;
   //覆盖左上角
   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) {
int i,j;

qipan p1=new qipan();
p1.chessboard(0,0,0,1,4);
for(i=0;i<4;i++){
   for(j=0;j<4;j++)
    System.out.print(board[i][j]+" ");
   System.out.print("\n");
}
}
}

运行结果:

1 0 2 2
1 1 0 2
3 0 0 4
3 3 4 4

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

棋盘覆盖问题(分治策略)

在一个2^k*2^k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格且称该棋盘为一特殊棋盘。利用L型骨牌对特殊棋盘进行覆盖,要求骨牌不得重叠覆盖。 在棋盘覆盖问题中,可将棋盘转换...

算法系列(一):分治策略--棋盘覆盖

算法系列(一):棋盘覆盖 一、分析 问题描述:   图1-1 k=2时的一个特殊棋盘 在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一特殊方格,且称该棋...

分治策略(棋盘覆盖)

【问题描述】       在一个2^k×2^k个方格组成的棋盘中,有一个方格与其他方格不同,称该方格为一特殊方格,并称该棋盘为一个特殊棋盘。显然特殊方格在棋盘上出现的位置有4^k种情形。因而对任何k≥...

算法java实现--分治法--棋盘覆盖问题

随机数的java实现(概率算法) 具体问题描述以及C/C++实现参见网址 http://blog.csdn.net/liufeng_king/article/details/8978740

分治法-棋盘覆盖 java

  • 2010-05-28 09:08
  • 939B
  • 下载

java实现的棋盘覆盖

算法设计与分析 第二版

棋盘覆盖java实现代码

  • 2009-09-07 15:54
  • 703B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)