对于n皇后问题其实有很多思路,在这里我是从第一层开始一层一层往上走,这样可以不用判断皇后是否同行的问题.
public class NQueen {
public static void main(String[] args) {
System.out.println("请输入皇后数量");
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int [] arr = new int[i];
layQueen(0,arr);
}
public static void layQueen(int n,int[] arr){
if(n==arr.length){
print(arr);
return;
}
for (int i = 0; i < arr.length; i++) {
arr[n] = i;
if(judge(n,arr)){
layQueen(n+1,arr);
}
}
}
private static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
private static boolean judge(int n, int[] arr) {
for (int i = 0; i < n; i++) {
if(arr[i] == arr[n] || Math.abs(arr[n]-arr[i]) == Math.abs(n -i )){
return false;
}
}
return true;
}
}