输出摆放方式的数量和每种方式的摆放的 位置。
package 递归回溯;
//输出摆放的方式有多少种
public class N皇后 {
static int[] x;//存储皇后摆放的位置
static int sum=0;
static int n=4;//4皇后问题
public static void main(String[] args) {
x=new int[n+1];
dfs(1,"");
System.out.println(sum);
}
public static void dfs(int t,String s){
if(t>n){
sum++;
System.out.println(s);//输出摆放位置
}
else{
for(int i=1;i<=n;i++){
x[t]=i;//
if(p(t)){
dfs(t+1,s+"("+t+" "+i+") ");
}
}
}
}
public static boolean p(int t){//用于判断当前节点是否与前几个几点同列或对角
for(int i=1;i<t;i++){
if(x[i]==x[t]||Math.abs(x[i]-x[t])==Math.abs(t-i)){
return false;
}
}
return true;
}
}