八皇后问题 JAVA程序代码以及运行结果
publicclass Queen {
//同栏是否有皇后,1表示有
privateint[] column;
//右上至左下是否有皇后
privateint []rup;
//左上至右下是否有皇后
privateint[] lup;
//解答
privateint[] queen;
//解答编号
privateintnum;
public Queen(){
column=newint[8+1];
rup=newint[2*8+1];
lup=newint[2*8+1];
for(int i=1;i<=8;i++){
column[i]=1;
}
for(int i=1;i<=2*8;i++){
rup[i]=lup[i]=1;
queen=newint[8+1];
}
}
publicvoid backtrack(int i){
if(i>8){
showAnswer();
}
else{
for(int j=1;j<=8;j++){
if(column[j]==1&&rup[i+j]==1&&lup[i-j+8]==1){
queen[i]=j;//设定为占用
column[j]=rup[i+j]=lup[i-j+8]=0;
backtrack(i+1);
column[j]=rup[i+j]=lup[i-j+8]=1;
}
}
}
}
protectedvoid showAnswer(){
num++;
System.out.println("\n解答"+num);
for(int y=1;y<=8;y++){
for(int x=1;x<=8;x++){
if(queen[y]==x){
System.out.print("Q");
}
else{
System.out.print("X");
}
}
System.out.println();
}
}
publicstaticvoid main(String[] args) {
Queen queen=new Queen();
queen.backtrack(1);
}
}