package com.itcast.datastructure.recursion;
public class Queen8 {
//皇后数量
private static int max=9;
//存放结果的数组
private static int[] arr=new int[max];
private static int judgeCount=0;
private static int resCount=0;
public static void main(String[] args) {
check(0);
System.out.println(judgeCount);
System.out.println(resCount);
}
//检查棋盘上的一行
public static void check(int n){
if(max==n){
resCount++;
printArr();
return;
}
for (int i=0;i<max;i++){
arr[n]=i;
if(judge(n)){
check(n+1);
}
}
}
//检查该位置放置皇后是否冲突
public static boolean judge(int n){
judgeCount++;
for (int i=0;i<n;i++){
if(arr[i]==arr[n]||Math.abs(n-i)==Math.abs(arr[n]-arr[i])){
return false;
}
}
return true;
}
//打印一个结构
public static void printArr(){
for (int i:arr){
System.out.print(i+" ");
}
System.out.println();
}
}
算法:递归解决八皇后问题
于 2022-05-02 11:58:31 首次发布