public class EgihtQueue {
int max=8;
int[] queen=new int[max];
int count=0;
boolean[] flag={true,true,true,true,true,true,true,true};//判断该列是否被占领
boolean[] d1={true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true};//判断主对角线是否被占
boolean[] d2={true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true};//判断副对角线是否被占
public static void main(String[] args) {
EgihtQueue egihtQueue=new EgihtQueue();
egihtQueue.findqueen(0);
System.out.println(egihtQueue.count);
}
private void print(){
for(int i=0;i<queen.length;i++){
System.out.print(queen[i]+"");
}
System.out.println();
count++;
}
//放置第n个皇后,测试当前位置是否可以安放
public boolean findqueen(int n){
int col;
for(col=0;col<8;col++){//每个皇后都有8种可能的列
if(flag[col]&&d1[n-col+7]&&d2[n+col]){
queen[n]=col;
flag[col]=false;
d1[n-col+7]=false;
d2[n+col]=false;
if(n<7) {
findqueen(n+1);//当不行时,返回false回溯至此
}else {
print();
}
flag[col]=true;
d1[n-col+7]=true;
d2[n+col]=true;
}
}
return false;
}
}
八皇后问题代码
最新推荐文章于 2023-11-19 11:00:23 发布