import java.util.Scanner;
public class N皇后{
static int N = 0;
static int[] x =new int[100];
static int count=0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
nqueens(1,N);
}
public static void nqueens(int k, int n){
int j ;
if(k > n) print(n);
else{
for (j = 1; j <= n ; j++){
if(isok(k,j)){
x[k] = j;
nqueens(k+1,n);
}
}
}
}
//print()方法用来输出N皇后的解
private static void print(int n) {
count++;
System.out.println("第"+count+"个解:");
for (int i = 0; i < n; i++) {
System.out.print(x[i]);
}
System.out.println();
}
// isok()方法用来判断该皇后现在的位置是否满足条件
public static boolean isok(int k, int j){
int i ;
for (i=1 ; i<k;i++){
if(x[i] == j|| Math.abs(i-k)== Math.abs(x[i] - j))
return false;
}
return true;
}
}
总结:1、善于利用和构建Java方法
2、基本类型和引用类型之间的关系