package cn.tryboom.Chess;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import org.junit.Test;
public class ChessBoard {
int tile=1;
int size;
int tr =0;
int tc =0;
int dr;
int dc;
int Board[][]=new int[100][100];
@Test
public void in(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入size");
size=sc.nextInt();
System.out.println("特殊方格行");
dr=sc.nextInt();
System.out.println("特殊方格列");
dc=sc.nextInt();
}
public void ChessBoard(int tr,int tc,int dr,int dc,int size){
if (size==1) return;
int t=tile++, //L型骨牌
s=size/2; //分割棋盘
//覆盖左上角棋盘
if(dr<tr+s&&dc<tc+s)
ChessBoard(tr,tc,dr,dc,s);
else{//此棋盘中无特殊方格
//用t号L型骨牌覆盖右下角
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{//此棋盘中无特殊方格
//用t号L型骨牌覆盖左下角
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{//用L型骨牌覆盖右上角
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{
//用t号L型骨牌覆盖左上角
Board[tr+s][tc+s]=t;
//覆盖其余方格
ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
}
}
@Test
//运行测试方法
public void run() {
//调用in方法输入参数
int a;
int b;
int c;
in();
//调用棋盘覆盖方法
ChessBoard(tr, tc, dr, dc, size);
int i;
int j;
//for循环取出数组的值,得出放置骨牌的放法
for(i=0;i<size; i++){
for(j=0;j<size;j++){
int num=Board[i][j];
int length=2;
String tempNum = num+"";
//长度不足2位补0,凑整齐好看
while(tempNum.length() < length){
tempNum = "0" + tempNum;
}
System.out.print(" "+tempNum);
}
System.out.println();
}
}
}
最近下载更多
2196316269 LV10
2021年2月25日
123456zmq LV1
2020年10月4日
asdfjk LV1
2020年3月15日
w547449093 LV2
2018年6月27日
樂樂123456 LV2
2018年4月25日
der2030 LV17
2018年1月11日
1107784447 LV2
2017年5月9日
simple2 LV2
2017年4月12日

最近浏览