题目描述:
在一个n×n (n = 2的k次方)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。
在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。
输入:
多组测试用例,每组测试用例包括两部分,
第一部分为方格的宽度n,
第二部分则为方格,特殊方格为-1,其他方格为0。
输出:
输出覆盖后的方案
解题思路:
由题可知,这主要棋盘的格数是4的k次方。我们主要是在把这个棋盘分成四部分,判断其是否有特殊方格,如果有,就不添加特殊方格,没有,就添加特殊方格(左上角这个区域填右下角这个方格,右上角填左下角这个方格,左下角这个区域填右上角这个方格,右小角填左上角这个方格),直到全部填完。
代码:
import java.util.Scanner;
public class DemoFour {
static int boardCodeGlobal = 1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int arrrayDimension = sc.nextInt();
int[][] arr = new int[arrrayDimension][arrrayDimension];
int dY = 0, dX = 0;
for (int i = 0; i < arrrayDimension; i++) {
for (int j