public class Queen {
int count=0;
int[] q={0,0,0,0,0,0,0,0};
Queen(){
}
void work(int n){
for(int i=1;i<9;i++){
if(match(n,i)==1){
q[n]=i;
if(n==7)
print();
else
work(n+1);
}
}
q[n]=0;
}
//对比是否有重复
int match(int n,int m){
if(n==0)
return 1;
//判断横列是否有重复
for(int z=0;z<n;z++){
if(m==q[z])
return 0;
}
//判断斜上是否有重复
for(int x=1;x<Math.min(n+1, m);x++){
if(m==q[n-x]+x)
return 0;
}
//判断斜下是否有重复
for(int y=1;y<Math.min(n+1, 9-m);y++){
if(m==q[n-y]-y)
return 0;
}
return 1;
}
//打印数组
void print(){
count++;
for(int i=0;i<8;i++){
System.out.print(q[i]+" ");
}
System.out.print(" "+count+"\n");
}
}