8皇后问题:
在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
与数独问题类似,不同点在于,一行只能放一个皇后,所有是按行处理的
private static void queenA(int row) {
if (row == N){
count++;
System.out.println("第"+ count + "个解");
printArr();
}else {
for (int col = 0;col
当找到能够放皇后的位置时,将其指1并处理下一行
每次放皇后是向将当前行清零
完整代码:
public class NQueen {
private static int count = 0;
private static final int N = 4;
private static int[][] arr = new int[N][N];
public static void main(String[] args) {
queenA(0);
}
private static void queenA(int row) {
if (row == N){
count++;
System.out.println("第"+ count + "个解");
printArr();
}else {
for (int col = 0;col=0 ; r--){
if (arr[r][col] == 1){
return true;
}
}
//左上
for (int r = row-1,c = col-1;r>=0 && c>=0 ; r--,c--){
if (arr[r][c] == 1){
return true;
}
}
//右上
for (int r = row-1 ,c = col+1; r>=0 && c



