JAVA Eight Queens

来源:互联网 发布:云端软件平台1.0 编辑:程序博客网 时间:2024/05/16 06:31

项目要求

Eight Queens:同行、同列、同对角线只能有一个Queen,不能冲突。

 

代码如下

public class EightQueens {// 同列有皇后则用1表示,否则为0private int[] column;// 右上至左下对角线有皇后则用1表示,否则为0private int[] rup;// 左上至右下对角线有皇后则用1表示,否则为0private int[] lup;// 放置皇后private int[] queen;// 解答编号private int num;// 皇后个数,可以更改为任意数private int MaxQueen = 8;public EightQueens() {column = new int[MaxQueen + 1];rup = new int[(2 * MaxQueen) + 1];lup = new int[(2 * MaxQueen) + 1];for (int i = 1; i <= MaxQueen; i++)column[i] = 1;for (int i = 1; i <= (2 * MaxQueen); i++)rup[i] = lup[i] = 1;queen = new int[MaxQueen + 1];}// 回溯法判断八皇后问题public void backtrack(int i) {if (i > MaxQueen) {showAnswer();} else {for (int j = 1; j <= MaxQueen; j++) {// 判断同列、对角线是否有皇后if ((column[j] == 1) && (rup[i + j] == 1)&& (lup[i - j + MaxQueen] == 1)) {queen[i] = j;// 设定为占用column[j] = rup[i + j] = lup[i - j + MaxQueen] = 0;backtrack(i + 1);column[j] = rup[i + j] = lup[i - j + MaxQueen] = 1;}}}}// 显示皇后摆放情况public void showAnswer() {num++;System.out.println("\nAnswer " + num);for (int y = 1; y <= MaxQueen; y++) {System.out.print("|");for (int x = 1; x <= MaxQueen; x++) {if (queen[y] == x) {System.out.print("Q|");} else {System.out.print(" |");}}System.out.println();}}public static void main(String[] args) {EightQueens queen = new EightQueens();queen.backtrack(1);}}


运行结果

Answer 1|Q| | | | | | | || | | | |Q| | | || | | | | | | |Q|| | | | | |Q| | || | |Q| | | | | || | | | | | |Q| || |Q| | | | | | || | | |Q| | | | |Answer 2|Q| | | | | | | || | | | | |Q| | || | | | | | | |Q|| | |Q| | | | | || | | | | | |Q| || | | |Q| | | | || |Q| | | | | | || | | | |Q| | | |Answer 3|Q| | | | | | | || | | | | | |Q| || | | |Q| | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | | |Q| | | || | |Q| | | | | |Answer 4|Q| | | | | | | || | | | | | |Q| || | | | |Q| | | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | || | | | | |Q| | || | |Q| | | | | |Answer 5| |Q| | | | | | || | | |Q| | | | || | | | | |Q| | || | | | | | | |Q|| | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | |Answer 6| |Q| | | | | | || | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | | | | |Q|| | | | | |Q| | || | | |Q| | | | |Answer 7| |Q| | | | | | || | | | |Q| | | || | | | | | |Q| || | | |Q| | | | ||Q| | | | | | | || | | | | | | |Q|| | | | | |Q| | || | |Q| | | | | |Answer 8| |Q| | | | | | || | | | | |Q| | ||Q| | | | | | | || | | | | | |Q| || | | |Q| | | | || | | | | | | |Q|| | |Q| | | | | || | | | |Q| | | |Answer 9| |Q| | | | | | || | | | | |Q| | || | | | | | | |Q|| | |Q| | | | | ||Q| | | | | | | || | | |Q| | | | || | | | | | |Q| || | | | |Q| | | |Answer 10| |Q| | | | | | || | | | | | |Q| || | |Q| | | | | || | | | | |Q| | || | | | | | | |Q|| | | | |Q| | | ||Q| | | | | | | || | | |Q| | | | |Answer 11| |Q| | | | | | || | | | | | |Q| || | | | |Q| | | || | | | | | | |Q||Q| | | | | | | || | | |Q| | | | || | | | | |Q| | || | |Q| | | | | |Answer 12| |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | ||Q| | | | | | | || | |Q| | | | | || | | | |Q| | | || | | | | | |Q| || | | |Q| | | | |Answer 13| | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | || | | | | |Q| | |Answer 14| | |Q| | | | | || | | | |Q| | | || |Q| | | | | | || | | | | | | |Q||Q| | | | | | | || | | | | | |Q| || | | |Q| | | | || | | | | |Q| | |Answer 15| | |Q| | | | | || | | | |Q| | | || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | || | | |Q| | | | || | | | | | |Q| ||Q| | | | | | | |Answer 16| | |Q| | | | | || | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | |Answer 17| | |Q| | | | | || | | | |Q| | | || | | | | | | |Q|| | | |Q| | | | ||Q| | | | | | | || | | | | | |Q| || |Q| | | | | | || | | | | |Q| | |Answer 18| | |Q| | | | | || | | | | |Q| | || |Q| | | | | | || | | | |Q| | | || | | | | | | |Q||Q| | | | | | | || | | | | | |Q| || | | |Q| | | | |Answer 19| | |Q| | | | | || | | | | |Q| | || |Q| | | | | | || | | | | | |Q| ||Q| | | | | | | || | | |Q| | | | || | | | | | | |Q|| | | | |Q| | | |Answer 20| | |Q| | | | | || | | | | |Q| | || |Q| | | | | | || | | | | | |Q| || | | | |Q| | | ||Q| | | | | | | || | | | | | | |Q|| | | |Q| | | | |Answer 21| | |Q| | | | | || | | | | |Q| | || | | |Q| | | | ||Q| | | | | | | || | | | | | | |Q|| | | | |Q| | | || | | | | | |Q| || |Q| | | | | | |Answer 22| | |Q| | | | | || | | | | |Q| | || | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | |Answer 23| | |Q| | | | | || | | | | |Q| | || | | | | | | |Q||Q| | | | | | | || | | |Q| | | | || | | | | | |Q| || | | | |Q| | | || |Q| | | | | | |Answer 24| | |Q| | | | | || | | | | |Q| | || | | | | | | |Q||Q| | | | | | | || | | | |Q| | | || | | | | | |Q| || |Q| | | | | | || | | |Q| | | | |Answer 25| | |Q| | | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | |Answer 26| | |Q| | | | | || | | | | | |Q| || |Q| | | | | | || | | | | | | |Q|| | | | |Q| | | ||Q| | | | | | | || | | |Q| | | | || | | | | |Q| | |Answer 27| | |Q| | | | | || | | | | | |Q| || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | || | | |Q| | | | ||Q| | | | | | | || | | | |Q| | | |Answer 28| | |Q| | | | | || | | | | | | |Q|| | | |Q| | | | || | | | | | |Q| ||Q| | | | | | | || | | | | |Q| | || |Q| | | | | | || | | | |Q| | | |Answer 29| | | |Q| | | | ||Q| | | | | | | || | | | |Q| | | || | | | | | | |Q|| |Q| | | | | | || | | | | | |Q| || | |Q| | | | | || | | | | |Q| | |Answer 30| | | |Q| | | | ||Q| | | | | | | || | | | |Q| | | || | | | | | | |Q|| | | | | |Q| | || | |Q| | | | | || | | | | | |Q| || |Q| | | | | | |Answer 31| | | |Q| | | | || |Q| | | | | | || | | | |Q| | | || | | | | | | |Q|| | | | | |Q| | ||Q| | | | | | | || | |Q| | | | | || | | | | | |Q| |Answer 32| | | |Q| | | | || |Q| | | | | | || | | | | | |Q| || | |Q| | | | | || | | | | |Q| | || | | | | | | |Q||Q| | | | | | | || | | | |Q| | | |Answer 33| | | |Q| | | | || |Q| | | | | | || | | | | | |Q| || | |Q| | | | | || | | | | |Q| | || | | | | | | |Q|| | | | |Q| | | ||Q| | | | | | | |Answer 34| | | |Q| | | | || |Q| | | | | | || | | | | | |Q| || | | | |Q| | | ||Q| | | | | | | || | | | | | | |Q|| | | | | |Q| | || | |Q| | | | | |Answer 35| | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | | |Q| | |Answer 36| | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | ||Q| | | | | | | || | |Q| | | | | || | | | |Q| | | || | | | | | |Q| |Answer 37| | | |Q| | | | || | | | | |Q| | ||Q| | | | | | | || | | | |Q| | | || |Q| | | | | | || | | | | | | |Q|| | |Q| | | | | || | | | | | |Q| |Answer 38| | | |Q| | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | |Q| | | |Answer 39| | | |Q| | | | || | | | | |Q| | || | | | | | | |Q|| | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | || |Q| | | | | | |Answer 40| | | |Q| | | | || | | | | | |Q| ||Q| | | | | | | || | | | | | | |Q|| | | | |Q| | | || |Q| | | | | | || | | | | |Q| | || | |Q| | | | | |Answer 41| | | |Q| | | | || | | | | | |Q| || | |Q| | | | | || | | | | | | |Q|| |Q| | | | | | || | | | |Q| | | ||Q| | | | | | | || | | | | |Q| | |Answer 42| | | |Q| | | | || | | | | | |Q| || | | | |Q| | | || |Q| | | | | | || | | | | |Q| | ||Q| | | | | | | || | |Q| | | | | || | | | | | | |Q|Answer 43| | | |Q| | | | || | | | | | |Q| || | | | |Q| | | || | |Q| | | | | ||Q| | | | | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | |Answer 44| | | |Q| | | | || | | | | | | |Q||Q| | | | | | | || | |Q| | | | | || | | | | |Q| | || |Q| | | | | | || | | | | | |Q| || | | | |Q| | | |Answer 45| | | |Q| | | | || | | | | | | |Q||Q| | | | | | | || | | | |Q| | | || | | | | | |Q| || |Q| | | | | | || | | | | |Q| | || | |Q| | | | | |Answer 46| | | |Q| | | | || | | | | | | |Q|| | | | |Q| | | || | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || |Q| | | | | | || | | | | |Q| | |Answer 47| | | | |Q| | | ||Q| | | | | | | || | | |Q| | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | | | | |Q| || | |Q| | | | | |Answer 48| | | | |Q| | | ||Q| | | | | | | || | | | | | | |Q|| | | |Q| | | | || |Q| | | | | | || | | | | | |Q| || | |Q| | | | | || | | | | |Q| | |Answer 49| | | | |Q| | | ||Q| | | | | | | || | | | | | | |Q|| | | | | |Q| | || | |Q| | | | | || | | | | | |Q| || |Q| | | | | | || | | |Q| | | | |Answer 50| | | | |Q| | | || |Q| | | | | | || | | |Q| | | | || | | | | |Q| | || | | | | | | |Q|| | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| |Answer 51| | | | |Q| | | || |Q| | | | | | || | | |Q| | | | || | | | | | |Q| || | |Q| | | | | || | | | | | | |Q|| | | | | |Q| | ||Q| | | | | | | |Answer 52| | | | |Q| | | || |Q| | | | | | || | | | | |Q| | ||Q| | | | | | | || | | | | | |Q| || | | |Q| | | | || | | | | | | |Q|| | |Q| | | | | |Answer 53| | | | |Q| | | || |Q| | | | | | || | | | | | | |Q||Q| | | | | | | || | | |Q| | | | || | | | | | |Q| || | |Q| | | | | || | | | | |Q| | |Answer 54| | | | |Q| | | || | |Q| | | | | ||Q| | | | | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | || | | | | | |Q| |Answer 55| | | | |Q| | | || | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | || | | |Q| | | | |Answer 56| | | | |Q| | | || | |Q| | | | | || | | | | | | |Q|| | | |Q| | | | || | | | | | |Q| ||Q| | | | | | | || | | | | |Q| | || |Q| | | | | | |Answer 57| | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | | | | |Q|| | | | | |Q| | || | | |Q| | | | || |Q| | | | | | |Answer 58| | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | || | |Q| | | | | |Answer 59| | | | |Q| | | || | | | | | |Q| || |Q| | | | | | || | | |Q| | | | || | | | | | | |Q||Q| | | | | | | || | |Q| | | | | || | | | | |Q| | |Answer 60| | | | |Q| | | || | | | | | |Q| || |Q| | | | | | || | | | | |Q| | || | |Q| | | | | ||Q| | | | | | | || | | |Q| | | | || | | | | | | |Q|Answer 61| | | | |Q| | | || | | | | | |Q| || |Q| | | | | | || | | | | |Q| | || | |Q| | | | | ||Q| | | | | | | || | | | | | | |Q|| | | |Q| | | | |Answer 62| | | | |Q| | | || | | | | | |Q| || | | |Q| | | | ||Q| | | | | | | || | |Q| | | | | || | | | | | | |Q|| | | | | |Q| | || |Q| | | | | | |Answer 63| | | | |Q| | | || | | | | | | |Q|| | | |Q| | | | ||Q| | | | | | | || | |Q| | | | | || | | | | |Q| | || |Q| | | | | | || | | | | | |Q| |Answer 64| | | | |Q| | | || | | | | | | |Q|| | | |Q| | | | ||Q| | | | | | | || | | | | | |Q| || |Q| | | | | | || | | | | |Q| | || | |Q| | | | | |Answer 65| | | | | |Q| | ||Q| | | | | | | || | | | |Q| | | || |Q| | | | | | || | | | | | | |Q|| | |Q| | | | | || | | | | | |Q| || | | |Q| | | | |Answer 66| | | | | |Q| | || |Q| | | | | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | |Q| | | || | | | | | | |Q|| | | |Q| | | | |Answer 67| | | | | |Q| | || |Q| | | | | | || | | | | | |Q| ||Q| | | | | | | || | | |Q| | | | || | | | | | | |Q|| | | | |Q| | | || | |Q| | | | | |Answer 68| | | | | |Q| | || | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | |Answer 69| | | | | |Q| | || | |Q| | | | | ||Q| | | | | | | || | | | | | | |Q|| | | |Q| | | | || |Q| | | | | | || | | | | | |Q| || | | | |Q| | | |Answer 70| | | | | |Q| | || | |Q| | | | | ||Q| | | | | | | || | | | | | | |Q|| | | | |Q| | | || |Q| | | | | | || | | |Q| | | | || | | | | | |Q| |Answer 71| | | | | |Q| | || | |Q| | | | | || | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|Answer 72| | | | | |Q| | || | |Q| | | | | || | | | |Q| | | || | | | | | | |Q||Q| | | | | | | || | | |Q| | | | || |Q| | | | | | || | | | | | |Q| |Answer 73| | | | | |Q| | || | |Q| | | | | || | | | | | |Q| || |Q| | | | | | || | | |Q| | | | || | | | | | | |Q||Q| | | | | | | || | | | |Q| | | |Answer 74| | | | | |Q| | || | |Q| | | | | || | | | | | |Q| || |Q| | | | | | || | | | | | | |Q|| | | | |Q| | | ||Q| | | | | | | || | | |Q| | | | |Answer 75| | | | | |Q| | || | |Q| | | | | || | | | | | |Q| || | | |Q| | | | ||Q| | | | | | | || | | | | | | |Q|| |Q| | | | | | || | | | |Q| | | |Answer 76| | | | | |Q| | || | | |Q| | | | ||Q| | | | | | | || | | | |Q| | | || | | | | | | |Q|| |Q| | | | | | || | | | | | |Q| || | |Q| | | | | |Answer 77| | | | | |Q| | || | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | |Q| | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | |Answer 78| | | | | |Q| | || | | |Q| | | | || | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | |Q| | | || |Q| | | | | | || | | | | | | |Q|Answer 79| | | | | |Q| | || | | |Q| | | | || | | | | | |Q| ||Q| | | | | | | || | | | | | | |Q|| |Q| | | | | | || | | | |Q| | | || | |Q| | | | | |Answer 80| | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | || | |Q| | | | | |Answer 81| | | | | | |Q| ||Q| | | | | | | || | |Q| | | | | || | | | | | | |Q|| | | | | |Q| | || | | |Q| | | | || |Q| | | | | | || | | | |Q| | | |Answer 82| | | | | | |Q| || |Q| | | | | | || | | |Q| | | | ||Q| | | | | | | || | | | | | | |Q|| | | | |Q| | | || | |Q| | | | | || | | | | |Q| | |Answer 83| | | | | | |Q| || |Q| | | | | | || | | | | |Q| | || | |Q| | | | | ||Q| | | | | | | || | | |Q| | | | || | | | | | | |Q|| | | | |Q| | | |Answer 84| | | | | | |Q| || | |Q| | | | | ||Q| | | | | | | || | | | | |Q| | || | | | | | | |Q|| | | | |Q| | | || |Q| | | | | | || | | |Q| | | | |Answer 85| | | | | | |Q| || | |Q| | | | | || | | | | | | |Q|| |Q| | | | | | || | | | |Q| | | ||Q| | | | | | | || | | | | |Q| | || | | |Q| | | | |Answer 86| | | | | | |Q| || | | |Q| | | | || |Q| | | | | | || | | | |Q| | | || | | | | | | |Q||Q| | | | | | | || | |Q| | | | | || | | | | |Q| | |Answer 87| | | | | | |Q| || | | |Q| | | | || |Q| | | | | | || | | | | | | |Q|| | | | | |Q| | ||Q| | | | | | | || | |Q| | | | | || | | | |Q| | | |Answer 88| | | | | | |Q| || | | | |Q| | | || | |Q| | | | | ||Q| | | | | | | || | | | | |Q| | || | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | |Answer 89| | | | | | | |Q|| |Q| | | | | | || | | |Q| | | | ||Q| | | | | | | || | | | | | |Q| || | | | |Q| | | || | |Q| | | | | || | | | | |Q| | |Answer 90| | | | | | | |Q|| |Q| | | | | | || | | | |Q| | | || | |Q| | | | | ||Q| | | | | | | || | | | | | |Q| || | | |Q| | | | || | | | | |Q| | |Answer 91| | | | | | | |Q|| | |Q| | | | | ||Q| | | | | | | || | | | | |Q| | || |Q| | | | | | || | | | |Q| | | || | | | | | |Q| || | | |Q| | | | |Answer 92| | | | | | | |Q|| | | |Q| | | | ||Q| | | | | | | || | |Q| | | | | || | | | | |Q| | || |Q| | | | | | || | | | | | |Q| || | | | |Q| | | |


学习心得

为了解决八皇后问题特地研究了一下回溯法,希望能够在以后学习中再多加运用。

 

题目来自《JAVA语言程序设计》P230-6.20***

 

 

2 0