利用回溯算法解决八皇后问题实例:
public class Queen {
static int max = 8;
static int[] arr = new int[max];
static int count = 0;
public static void main(String[] args) {
find(0);
System.out.printf("共有%d种解法",count);
}
public static void find(int n){
if(n == max){
print();
count++;
return;
}
for(int i = 0;i < max;i++){
arr[n] = i;
if(judge(n)){
find(n + 1);
}
}
}
public static boolean judge(int n){
for(int i = 0;i < n;i++){
if(arr[i] == arr[n] || Math.abs(n - i) == Math.abs(arr[i] - arr[n])){
return false;
}
}
return true;
}
public static void print(){
for(int i : arr){
System.out.print(i + " ");
}
System.out.println();
}
}
太懒了,不想注释 (๑•̀ㅂ•́)و✧