一、迷宫回溯
二、八皇后问题
跟迷宫回溯很相似,相当于是有八层for循环。
一.首先将第一个棋子放入第一行,循环八次,在进行第一次时,即放入第一列时,递归调用函数将第二个棋子放入第二行,循环八次,在进行第一次时,即放入第一个符合条件的列时,递归调用函数…
到最后一行第一个符合条件的棋子放入后,因为该棋盘是八行八列,最后一个棋子在前七个棋子已经放好的条件下,只能有一个位置,所以第一个符合条件的也是唯一一个,之后,回溯到倒数第二个循环,接着往下走到第二个符合条件的棋子,再次放入第八个棋子,之后再回溯,第七次循环走完之后,回溯到第六次。。。以此类推,直至第一层循环全部走完。
public class Queener {
int max=8;
int arr[]=new int[max];
int count;
public static void main(String[] args) {
Queener queener=new Queener();
queener.check(0);
System.out.println(queener.count);
}
public void check(int n)
{
if(n==max)
{
print();
return;
}
else
{
for(int i = 0; i<max; i++)
{
arr[n]=i;
if(judge(n))
{
check(n+1);
}
}
}
}
private void print() {
for(int i=0;i<max;i++)
{
System.out.print(arr[i]);
}
count++;
System.out.println();
}
public boolean judge(int n) {
for(int i=0;i<n;i++) {
if(n==0) return true;
if (arr[n]==arr[i]||Math.abs(n-i)==Math.abs(arr[n]-arr[i]))
{
return false;
}
}
return true;
}
}