//八皇后问题,递归版本
public class EightQueen_2 {
private static int[] index;
private static int count=0;
public static void main(String[] args) {
//每行只能放置一个皇后,如果index 数组的结果是02367145,表示第1行的皇后在第1列,第2行皇后在第3列......
index=new int[8];
recursion(0);System.out.println("一共有"+count+"可能");
}
public static void recursion(int layer){
for(index[layer]=0;index[layer]<8;index[layer]++){
if(check(index,layer)) //如果不能放置皇后,则跳出本次循环
continue;
if(layer==7){
for(int x:index)
System.out.print(index[x]);
System.out.println();
count++;
}
else
recursion(layer+1);
}
}
//判断第layer层取数字index[layer]是否可以
public static boolean check(int[] index,int layer){
boolean result=false;
for(int i=0;i<layer;i++ ){
result=result||(index[layer]==index[i]||(Math.abs(index[layer]-index[i])==(layer-i))); //重要的一步,判断layer行在前几行皇后位置确定以后,能够摆放的位置
if(result)
break;
}
return result;
}
}