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计算八皇后_八皇后java算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows mysql源码安装配置_
- 下一篇: 对象的来历