package com.link;
/**
* @Author sunzy
* @DATE Create in 2019/10/16 11:10
*/
public class recall {
private static int count=0;
//问题的解的结果
public static int[] result=new int[8];
public static void main(String[] args) {
searchResult(0);
System.out.println("公有"+count+"种解法");
}
private static void searchResult(int level) {
if(level>7){
printResult();
return;
}
for(int i=0;i<8;i++){
result[level]=i+1;
if(isok(level)){
searchResult(level+1);
}
}
}
/**
* 判断是否符合条件
* @param level
* @return
*/
private static boolean isok(int level) {
int j= result[level];
for(int i=0;i<level;i++){
//有列相同
if(result[i]==j){
return false;
}
}
int k=0;
for(int i=level;i>=0;i--){
k++;
//左上角
if(i-1>=0&&result[i-1]==(j-k)){
return false;
}
//右上角
if(i-1>=0&&result[i-1]==(j+k)){
return false;
}
}
return true;
}
private static void printResult() {
for(int i=0;i<8;i++){
System.out.print("第"+(i+1)+"行放置"+result[i]+",");
}
count++;
System.out.println("");
}
}
回溯算法实现8皇后问题java 版
最新推荐文章于 2021-11-24 23:38:24 发布