数据结构于算法
八皇后算法
package com.ws;
public class Queue8 {
int max=8;
//定义数组Array,保存皇后放置位置的结果,
int[] array =new int[max];
static int count = 0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Queue8 queue8=new Queue8();
queue8.check(0);
System.out.println(count);
}
//编写一个方法,放置皇后
private void check(int n){
if(n == max){
print(); //n==8
return;
}
for (int i = 0; i < max; i++) {
//先把当前皇后n 放到该行的第1列;
array[n]=i;
//判断当放置第n个皇后到i列,是否冲突,
if(judge(n)){
//接着放n+1个皇后,开始递归
check(n+1);
}//如果冲突,继续执行array[n]=i;既将本皇后放置在本行的后移的位置 既循环i的++了,
}
}
//查看当我们放置皇后后,就检查皇后是否和前面放置的冲突
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;
}
