1.回溯算法
回溯算法是一种搜索法,试探法,它会在每一步做出选择,一旦发现这个选择无法得到期望结果,就回溯回去,重新做出选择。深度优先搜索利用的就是回溯算法思想。
2.八皇后问题
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
3.代码
public class Queue {
int Max = 8;
int[] a = new int[Max];
public static void main(String[] args) {
new Queue().put(0);
}
//放置
public void put(int n){
if (n==Max){
print();
return;
}
for (int i = 0; i < Max; i++) {
a[n] = i;
if (judge(n)){
put(n+1);
}
}
}
//判断
public boolean judge(int n){
for (int i = 0; i < n; i++) {
//判断是不是在同一列上或者在不在左右斜线上
if (a[n] == a[i] || n-i == Math.abs(a[n]-a[i])){
return false;
}
}
return true;
}
//打印
public void print(){
for (int i = 0; i < Max; i++) {
System.out.print(a[i]+"");
}
System.out.println();
}
}