public class EightQueue {
public void doIterator(int level,int[] target){
if(level < 1)return;
if(level > 8)return;
for(int column=1;column<=target.length;column++){
if(this.doMatch(level, column, target)){
this.doIterator(level+1, target);
}
}
}
public boolean doMatch(int level,int column,int[] target){
int l = level;
int c = column;
boolean flag = true;
for(int j=l-1;j>0;j--){
int leftUp = c - (l-j);
int rightUp = c + (l-j);
if(leftUp>0&&leftUp==target[j-1]){
flag = false;
break;
}
if(rightUp<=target.length&&rightUp==target[j-1]){
flag = false;
break;
}
if(c==target[j-1]){
flag = false;
break;
}
}
if(flag){
target[l-1] = c;
if(level == target.length){
this.doPrintlnOut(target);
}
}
return flag;
}
private int countSolve;
public void doPrintlnOut(int[] target){
System.out.println("第"+ (++countSolve) +"个解决方案---->开始");
for(int index=0;index<target.length;index++){
System.out.println((index+1) +"---->"+target[index]);
}
System.out.println("第"+countSolve +"个解决方案---->结束");
}
public static void main(String[] args){
EightQueue eightQueue = new EightQueue();
int[] target = new int[8];
eightQueue.doIterator(1,target);
}
}