1. 八皇后问题
package practice;
public class Queue8 {
public static void main(String[] args) {
Queue8 queue8 = new Queue8();
queue8.check(0);
System.out.println("一共有:"+count+"种解法");
}
int max = 8;
int[] array = new int[max];
static int count = 0;
//打印
public void print(){
for (int i=0; i<array.length; i++){
System.out.print(array[i]+" ");
}
count++;
System.out.println();
}
//放置第n个皇后
private void check(int n){
if(n == max){
print();
return;
}
for (int i = 0; i < max; i++){
array[n] = i;
if (judge(n)){
check(n+1);
}
}
}
//放置第n个后,判断是否和前面的冲突
private boolean judge(int n){
for (int i=0; i<n; i++){
//判断是否在同一列或同一斜线
if (array[i] == array[n] || Math.abs(n-i) == Math.abs(array[n]-array[i])){
return false;
}
}
return true;
}
}