棋盘覆盖

棋盘覆盖

  1 import java.util.Scanner;
  2 
  3  class chessboardcover {
  4      int size =  8;
  5      int[][] Board =  new  int[size][size];
  6      static  int tile =  1;
  7 
  8     chessboardcover() {
  9          int k = size;
 10         Board[ 2][ 2] =  0;
 11          int tr =  0, tc =  0, dr =  2, dc =  2; // dr dc 特殊方格。
 12          ChessB(tr, tc, dr, dc, k);            // tr tc 
 13           int i, j;
 14          for (i =  0; i < size; i++) {
 15              for (j =  0; j < size; j++) {
 16                 System. out.print(Board[i][j] +  "      ");
 17             }
 18             System. out.println( " \n ");
 19         }
 20     }
 21     
 22     chessboardcover( int size)
 23     {
 24          this.size = size;
 25          // this.Board = new int [size][size];
 26           // this.tile = tile;
 27      }
 28 
 29      public  void ChessB( int tr,  int tc,  int dr,  int dc,  int size) {
 30          if (size ==  1)
 31              return;
 32          int t = tile++;
 33          int s = size /  2;
 34          // int t=tile++,s = size / 2;
 35          
 36           // 左上
 37           if (dr < tr + s && dc < tc + s) {
 38             ChessB(tr, tc, dr, dc, s);
 39         }
 40         
 41          else {
 42             Board[tr + s -  1][tc + s -  1] = t;
 43             ChessB(tr, tc, tr + s -  1, tc + s -  1, s);
 44         }
 45 
 46          // 右上
 47           if (dr < tr + s && dc >= tc + s) {
 48             ChessB(tr, tc + s, dr, dc, s);
 49         }
 50         
 51          else {
 52             Board[tr + s -  1][tc + s] = t;
 53              // ChessB(tr, tc, tr + s - 1, tc + s, s);
 54              ChessB(tr,tc+s,tr+s- 1,tc+s,s);
 55         }
 56 
 57          // 左下
 58           if (dr >= tr + s && dc < tc + s) {
 59             ChessB(tr + s, tc, dr, dc, s);
 60         }
 61 
 62          else {
 63             Board[tr + s][tc + s -  1] = t;
 64              // ChessB(tr, tc, tr + s, tc + s - 1, s);
 65              ChessB(tr+s, tc, tr + s, tc + s -  1, s);
 66         }
 67 
 68          // 右下
 69           if (dr >= tr + s && dc >= tc + s)
 70             ChessB(tr + s, tc + s, dr, dc, s);
 71         
 72          else {
 73             Board[tr + s][tc + s] = t;
 74             ChessB(tr + s, tc + s, tr + s, tc + s, s);
 75         }
 76         
 77     }
 78 
 79     
 80      public  void traverse()
 81     {
 82          int i, j;
 83          for (i =  0; i < size; i++) {
 84              for (j =  0; j < size; j++) {
 85                 System. out.print(Board[i][j] +  "      ");
 86             }
 87             System. out.println( " \n ");
 88         }
 89     }
 90     
 91     
 92      public  static  void main(String args[]) {
 93          // new chessboardcover();
 94          
 95           // 这里可以实现size的可变。同理特殊方格dr,dc的改变。
 96          Scanner  in =  new Scanner(System. in);        
 97         System. out.print( " input size: ");
 98          int temp_size=  in.nextInt();
 99         
100         chessboardcover chess_Object =  new chessboardcover(temp_size);
101         chess_Object.ChessB( 0022, temp_size);
102         chess_Object.traverse();
103     }

104 } 

转载于:https://www.cnblogs.com/zhengmian/archive/2012/04/27/chesscover.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值