untitled1.java
来自「应用JBuilder环境」· Java 代码 · 共 103 行
JAVA
103 行
package queen;
public class Untitled1 {
private static char[][] result = new char[8][8];
private static int sum = 1;
public static void main(String[] args) {
for (int i = 0;i < 8;i++)
for (int j = 0;j < 8;j++)
result[i][j] = 'X';
for (int i = 0;i < 8;i++)
placeQueen(0,i,1);
}
private static void print(char[][] result) {
for (int i = 0;i < 8;i++)
for (int j = 0;j < 8;j++) {
if (result[i][j] == 'Q') {
System.out.print(" " + j);
}
}
System.out.println();
System.out.println(" 0 1 2 3 4 5 6 7 ");
System.out.println(" +--+--+--+--+--+--+--+--+");
for (int i = 0;i < 8;i++) {
System.out.print("" + i + "|");
for (int j = 0;j < 8;j++)
System.out.print("" + result[i][j] + " |");
System.out.println();
System.out.println(" +--+--+--+--+--+--+--+--+");
}
}
private static void placeQueen(int x, int y, int queenNumber) {
if (canPlace(x,y)) {
result[x][y] = 'Q';
int m;
for (m = x + 1;m < 8;m++) {
int n;
for (n = 0;n < 8;n++) {
placeQueen(m,n,queenNumber + 1);
}
if (n == 8 && m > x) {
for (int k = 0;k < 8;k++)
result[x][k] = 'X';
return;
}
}
if (m == 8) {
System.out.println("第" + sum++ + "种放法:");
print(result);
for (int k = 0;k < 8;k++)
result[m - 1][k] = 'X';
return;
}
}
else
return;
return;
}
private static boolean canPlace(int x,int y) {
if (x > 7 || y > 7) {
System.out.println("Wrong Position to place queen!");
return false;
}
int i = 0;
for (i = 0;i < 8;i++) {
//正上下方是否有皇后
if (result[x][i] != 'X')
return false;
//正左右是否有皇后
if (result[i][y] != 'X')
return false;
}
//左上是否有皇后
i = 0;
while (x - i >= 0 && y - i >= 0) {
if (result[x - i][y - i] != 'X')
return false;
i++;
}
//右上是否有皇后
i =0;
while (x - i >= 0 && y + i <=7) {
if (result[x - i][y + i] != 'X')
return false;
i++;
}
//右下是否有皇后
i = 0;
while (x + i <= 7 && y + i <= 7) {
if (result[x + i][y + i] != 'X')
return false;
i++;
}
//左下是否有皇后
i = 0;
while (x + i <= 7 && y - i >= 0) {
if (result[x + i][y - i] != 'X')
return false;
i++;
}
return true;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?