package Nqueen; import java.util.Scanner; public class nQueen {

public static int vrb1;//定义一个全局变量用来使用

public static void main(String[] args) {

Scanner sc= new Scanner(System.in);
System.out.println("请输入数组大小>:");
int num1=sc.nextInt();
//创建目标大小的数组
int[] arrn = new int[num1];
qunn qunn1 = new qunn();
//运行
qunn1.put(arrn,0);

} } class vrb1{ int num1=0; } class qunn{

public void put(int[] arrn,int n){

if (n==arrn.length){
for (int i =0;i<arrn.length;i++){
System.out.print(arrn[i]+1+" ");
}
System.out.println(); //当一个换行符号用
System.out.println("over");
}
else{
for (int i=0;i<arrn.length;i++) {
arrn[n] = i ;
//如果此次放置没有产生冲突,则进入下一节分支
if (judge1(arrn, n)){
put(arrn,n+1);
}
}
}
}
//判断arr1中的第N位是否和前面的内容冲突
//这个方法和8皇后的内容相同
public boolean judge1(int[] arr1,int n){
for (int i = 0; i < n; i++) {
if (arr1[i] == arr1[n] || Math.abs(n - i) == Math.abs(arr1[n] - arr1[i])) {
return false;
}
}
return true;
}

}

效果图 如下

java  n皇后问题  详细源代码  并且把结果一一打印出来了_n皇后