1、 public class Q{
private int n ;
private int[] x ;
private long sum ;
private static int h ;
public Q(){
this.sum = 0 ;
this.n = 8 ;
this.x = new int[n+1];
h = 0 ;
}
public boolean place (int k){
for (int j = 1 ; j < k ; j++){
if ( (Math.abs(k - j)) == (Math.abs(x[j]-x[k])) || (x[j] == x[k]) ){
return false ;
}
}
return true ;
}
public void backTrace (int t){
if (t > n){
sum ++ ;
System.out.println ("方案" + (h++) + "");
print(x);
System.out.print ("/n----------------/n");
}else {
for (int i = 1 ; i <= n ; i++){
x[t] = i ;
if (place (t)){
backTrace (t+1);
}
}
}
}
public void print (int[] a){
for (int i = 1 ; i < a.length ; i++){
System.out.print ("皇后" + i + "在" + i + "行" +a[i] + "列、");
}
}
public static void main (String[] args){
Q em = new Q();
em.backTrace(1);
System.out.println ("方案" + em.sum);
}
private int n ;
private int[] x ;
private long sum ;
private static int h ;
public Q(){
this.sum = 0 ;
this.n = 8 ;
this.x = new int[n+1];
h = 0 ;
}
public boolean place (int k){
for (int j = 1 ; j < k ; j++){
if ( (Math.abs(k - j)) == (Math.abs(x[j]-x[k])) || (x[j] == x[k]) ){
return false ;
}
}
return true ;
}
public void backTrace (int t){
if (t > n){
sum ++ ;
System.out.println ("方案" + (h++) + "");
print(x);
System.out.print ("/n----------------/n");
}else {
for (int i = 1 ; i <= n ; i++){
x[t] = i ;
if (place (t)){
backTrace (t+1);
}
}
}
}
public void print (int[] a){
for (int i = 1 ; i < a.length ; i++){
System.out.print ("皇后" + i + "在" + i + "行" +a[i] + "列、");
}
}
public static void main (String[] args){
Q em = new Q();
em.backTrace(1);
System.out.println ("方案" + em.sum);
}
}