首页>代码>Java编写了一个棋盘覆盖算法,初学的可以看看>/棋盘覆盖/ChessBoard/src/cn/tryboom/Chess/ChessBoard.java
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日
最近浏览更多
myh7719  LV2 2022年6月13日
简单点  LV2 2021年12月20日
 LV10 2021年6月12日
2196316269  LV10 2021年2月25日
123456zmq  LV1 2020年10月4日
zh7y27  LV1 2020年7月4日
xmjying  LV13 2020年6月12日
hhhhhhhhhhhh微  LV1 2020年6月8日
梦本是很好的啦  LV11 2020年5月28日
asdfjk  LV1 2020年3月15日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友