首页 > 代码库 > 八皇后java算法

八皇后java算法

public class NQueens {  public static int num = 0; // 累计方案总数 public static final int MAXQUEEN = 5;// 皇后个数,同时也是棋盘行列总数 public static int[] cols = new int[MAXQUEEN]; // 定义cols数组,表示n列棋子摆放情况

public NQueens() {  // 核心函数,从第0列开始 getArrangement(0);  System.out.println(MAXQUEEN + 皇后问题有 + num + 种摆放方法。);  }

public void getArrangement(int n) {  // 遍历该列所有不合法的行,并用rows数组记录,不合法即rows[i]=true  boolean[] rows = new boolean[MAXQUEEN];  for (int i = 0; i < n; i++) {  rows[cols[i]] = true;  int d = n - i;  if (cols[i] - d >= 0)  rows[cols[i] - d] = true;  if (cols[i] + d <= MAXQUEEN - 1)  rows[cols[i] + d] = true;

 }

 for (int k = 0; k < MAXQUEEN; k++) {  // 判断该行是否合法 if (rows[k])  continue;  // 设置当前列合法棋子所在行数 cols[n] = k;  // 当前列不为最后一列时 if (n < MAXQUEEN - 1) {  getArrangement(n + 1);  } else {  // 累计方案个数 num++;  // 打印棋盘信息 printChessBoard();  }  }  }

 public void printChessBoard() {  System.out.println(第 + num + 种走法); for (int i = 0; i < MAXQUEEN; i++) {  for (int j = 0; j < MAXQUEEN; j++) {  if (i == cols[j]) {  System.out.print(0 );  } else  System.out.print(+ );  }  System.out.println();  }

 }

 public static void main(String args[]) {  NQueens queen = new NQueens();  } }

八皇后java算法