1、问题提出:
在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法
2、解决思路:
1)将列A的皇后放在第一行以后,列B的皇后放在第一行已经发生冲突。这时候不必继续放列C的皇后,而是调整列B的皇后到第二行,继续冲突放第三行,不冲突了才开始进入列C
2)将第1个位置的用for循环依次从1取到max,并用递归将递归过后的下一个皇后继续用for循环从1取到max,若过程中有不符合条件即改变皇后的值,直至n=8输出
3、代码实现:
public class Queen8 {
//定义一个max表示一共有多少个皇后
int max=8;
//定义数组Array,保存皇后放置位置的结果,比如arr={0,4,7,5,2,6,1,3}
int []arr=new int[max];
static int count=0;
public static void main(String[] args) {
Queen8 queen8=new Queen8();
queen8.check(0);
System.out.printf("一共有%d种解法",count);
}
//编写一个方法,放置第n个皇后
private void check(int n){