1.什么是八皇后问题?
2.解题思路
首先将问题抽象,八皇后问题是一个二维数组,但是由于每行只摆放一个皇后,可用一维数组保存,即数组的索引为棋盘的行,数组的值为摆放在当前行的位置。如arr【0】=0,即在第1行的第1列放置一个皇后。这样问题就可以简化为求一个一维数组,同时这个一维数组需满足的条件是arr[i]!=arr[n](不能为同一列)&&Math.abs(i-n)!=Math.abs(arr[i]-arr[n])(不能为同一斜线)
填数策略是:在当前行一次填入(1-9),若无冲突,进入下一行(递归);若有冲突,返回上一次循环的位置继续,若(1-9)均冲突,返回上一层的循环,在上一层的循环中继续(回溯)。递归出口为,当数组最后一个元素填完后且不发生冲突。
3.代码实现
/**
* 递归解决八皇后问题
* @author BayMax
*
*/
public class EightQueen {
private static int max=8;
private static int count=1;
private static int []arr=new int[max];
public st