Java实现棋盘覆盖问题
package qipan;
import java.util.Scanner;
public class ChessBoardCoverage{
private static int BOARD_SIZE=8;
private static int[][] board=new int[BOARD_SIZE][BOARD_SIZE];
private static int tile=1;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("棋盘的大小为:"+BOARD_SIZE);
System.out.print("请输入特殊方格所在的行号:");
int dr= scanner.nextInt();
System.out.print("请输入特殊方格所在的列号:");
int dc= scanner.nextInt();
scanner.close();
chessBoard(0,0,dr-1,dc-1,BOARD_SIZE);
System.out.println("特殊方格在第:" +dr+"行第"+dc+"列,覆盖后的棋盘:");
printBoard();
}
private static void chessBoard(int tr, int tc, int dr, int dc, int size){
if(size==1){
return;
}
int t=tile++;
int 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-1,s);
}
if(dr>=tr+s&&dc<tc+s){
chessBoard(tr+s,tc,dr,dc,s);
}else{
board[tr+s][tc+s-1]=1;
chessBoard(tr+s,tc,tr+s,tc+s-1,s);
}
if(dr>=tr+s&&dc>=tc+s){
chessBoar