import java.util.Scanner;
public class EightQueen{
public static final int N=100;//棋盘最大为100*100
public static int []queen=new int[N];
public static int n;
public static int sum=0;
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();//传入棋盘大小 n*n
place(0);//调用函数,放第0行的皇后
System.out.println("总共有:"+sum);
}
static boolean attack(int row,int col) {//判断能否把皇后放到第row行,第col列
//检查皇后是否冲突
for(int i=0;i<row;++i) {//遍历第row行前面的皇后
//queen[i]==col表示第i行的皇后在第col列,所以不能放
//Math.abs(queen[i]-col)==Math.abs(i-row),表示第i行,第queen[i]列的皇后和第row行col列在一条斜线(横坐标和纵坐标差值相等),所以不能放
if((queen[i]==col)||Math.abs(queen[i]-col)==Math.abs(i-row)) {
//在同一列 斜线上
return false;
}
}
N皇后问题Java——递归+回溯
最新推荐文章于 2024-07-04 17:55:00 发布