Java 八皇后问题
用Java解决八皇后问题
```java
public class EightQueens{
public static void main(String args[]){
int arr[] = new int [8];
T t1 = new T();
t1.f(arr,0);
}
}
class T{
int c=0;
public boolean check(int[] arr,int i){
//同一列上面有没有皇后
for(int k=0;k<i;k++){
if(arr[k]==arr[i]) return false;
}
//左上
for(int k=1;k<=i;k++){
if(arr[i-k]==arr[i]-k) return false;
}
//右上
for(int k=1;k<=i;k++){
if(arr[i-k]==arr[i]+k) return false;
}
return true;
}
public void f(int []arr,int i){
for(int j=0;j<8;j++){
arr[i]=j;//i表示行 j表示列
if(check(arr,i)) {
if(i==7){
c++;
System.out.println("第"+c+"种方法");
for (int p=0;p<8 ;p++ ) {
System.out.print(arr[p]+" ");
}
System.out.println();
}else{
f(arr,i+1);
}
}
//arr[i]=-1;
}
}
}