生活随笔
收集整理的這篇文章主要介紹了
【Java】求解N皇后问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼實現:
import java
.util
.Scanner
;public class Queen {int[] queue
;int queueNum
;public Queen(int queueNum
) {this.queueNum
= queueNum
;this.queue
= new int[queueNum
];for (int i
= 0; i
< queueNum
; i
++) {queue
[i
] = -1;}}public void getPlaceQueenSolutions() {int k
= 0;int solutionNum
= 0;while(k
>= 0) {queue
[k
]++;while(queue
[k
] < queueNum
&& place(k
) == 1) {queue
[k
]++;}if (queue
[k
] < queueNum
&& k
== queueNum
-1) {System
.out
.println("第" + ++solutionNum
+ "個解是:");for (int i
= 0; i
< queueNum
; i
++) {System
.out
.print(queue
[i
] + 1 + " ");}System
.out
.println();} else if (queue
[k
] < queueNum
&& k
< queueNum
-1) {k
++;} else {queue
[k
--] = -1;}}}private int place(int k
) {for (int i
= 0; i
< k
; i
++) {if (queue
[i
] == queue
[k
] || Math
.abs(i
-k
) == Math
.abs(queue
[i
]-queue
[k
])) {return 1;}}return 0;}public static void main(String
[] args
) {System
.out
.println("請輸入皇后個數:");Scanner scanner
= new Scanner(System
.in
);int k
= Integer
.parseInt(scanner
.nextLine());new Queen(k
).getPlaceQueenSolutions();scanner
.close();}}
比如輸入8,即有名的“八皇后問題”,解為92個
結果如下:
第
1個解是:
1 5 8 6 3 7 2 4
第
2個解是:
1 6 8 3 7 4 2 5
第
3個解是:
1 7 4 6 8 2 5 3
第
4個解是:
1 7 5 8 2 4 6 3
第
5個解是:
2 4 6 8 3 1 7 5
第
6個解是:
2 5 7 1 3 8 6 4
第
7個解是:
2 5 7 4 1 8 6 3
第
8個解是:
2 6 1 7 4 8 3 5
第
9個解是:
2 6 8 3 1 4 7 5
第
10個解是:
2 7 3 6 8 5 1 4
第
11個解是:
2 7 5 8 1 4 6 3
第
12個解是:
2 8 6 1 3 5 7 4
第
13個解是:
3 1 7 5 8 2 4 6
第
14個解是:
3 5 2 8 1 7 4 6
第
15個解是:
3 5 2 8 6 4 7 1
第
16個解是:
3 5 7 1 4 2 8 6
第
17個解是:
3 5 8 4 1 7 2 6
第
18個解是:
3 6 2 5 8 1 7 4
第
19個解是:
3 6 2 7 1 4 8 5
第
20個解是:
3 6 2 7 5 1 8 4
第
21個解是:
3 6 4 1 8 5 7 2
第
22個解是:
3 6 4 2 8 5 7 1
第
23個解是:
3 6 8 1 4 7 5 2
第
24個解是:
3 6 8 1 5 7 2 4
第
25個解是:
3 6 8 2 4 1 7 5
第
26個解是:
3 7 2 8 5 1 4 6
第
27個解是:
3 7 2 8 6 4 1 5
第
28個解是:
3 8 4 7 1 6 2 5
第
29個解是:
4 1 5 8 2 7 3 6
第
30個解是:
4 1 5 8 6 3 7 2
第
31個解是:
4 2 5 8 6 1 3 7
第
32個解是:
4 2 7 3 6 8 1 5
第
33個解是:
4 2 7 3 6 8 5 1
第
34個解是:
4 2 7 5 1 8 6 3
第
35個解是:
4 2 8 5 7 1 3 6
第
36個解是:
4 2 8 6 1 3 5 7
第
37個解是:
4 6 1 5 2 8 3 7
第
38個解是:
4 6 8 2 7 1 3 5
第
39個解是:
4 6 8 3 1 7 5 2
第
40個解是:
4 7 1 8 5 2 6 3
第
41個解是:
4 7 3 8 2 5 1 6
第
42個解是:
4 7 5 2 6 1 3 8
第
43個解是:
4 7 5 3 1 6 8 2
第
44個解是:
4 8 1 3 6 2 7 5
第
45個解是:
4 8 1 5 7 2 6 3
第
46個解是:
4 8 5 3 1 7 2 6
第
47個解是:
5 1 4 6 8 2 7 3
第
48個解是:
5 1 8 4 2 7 3 6
第
49個解是:
5 1 8 6 3 7 2 4
第
50個解是:
5 2 4 6 8 3 1 7
第
51個解是:
5 2 4 7 3 8 6 1
第
52個解是:
5 2 6 1 7 4 8 3
第
53個解是:
5 2 8 1 4 7 3 6
第
54個解是:
5 3 1 6 8 2 4 7
第
55個解是:
5 3 1 7 2 8 6 4
第
56個解是:
5 3 8 4 7 1 6 2
第
57個解是:
5 7 1 3 8 6 4 2
第
58個解是:
5 7 1 4 2 8 6 3
第
59個解是:
5 7 2 4 8 1 3 6
第
60個解是:
5 7 2 6 3 1 4 8
第
61個解是:
5 7 2 6 3 1 8 4
第
62個解是:
5 7 4 1 3 8 6 2
第
63個解是:
5 8 4 1 3 6 2 7
第
64個解是:
5 8 4 1 7 2 6 3
第
65個解是:
6 1 5 2 8 3 7 4
第
66個解是:
6 2 7 1 3 5 8 4
第
67個解是:
6 2 7 1 4 8 5 3
第
68個解是:
6 3 1 7 5 8 2 4
第
69個解是:
6 3 1 8 4 2 7 5
第
70個解是:
6 3 1 8 5 2 4 7
第
71個解是:
6 3 5 7 1 4 2 8
第
72個解是:
6 3 5 8 1 4 2 7
第
73個解是:
6 3 7 2 4 8 1 5
第
74個解是:
6 3 7 2 8 5 1 4
第
75個解是:
6 3 7 4 1 8 2 5
第
76個解是:
6 4 1 5 8 2 7 3
第
77個解是:
6 4 2 8 5 7 1 3
第
78個解是:
6 4 7 1 3 5 2 8
第
79個解是:
6 4 7 1 8 2 5 3
第
80個解是:
6 8 2 4 1 7 5 3
第
81個解是:
7 1 3 8 6 4 2 5
第
82個解是:
7 2 4 1 8 5 3 6
第
83個解是:
7 2 6 3 1 4 8 5
第
84個解是:
7 3 1 6 8 5 2 4
第
85個解是:
7 3 8 2 5 1 6 4
第
86個解是:
7 4 2 5 8 1 3 6
第
87個解是:
7 4 2 8 6 1 3 5
第
88個解是:
7 5 3 1 6 8 2 4
第
89個解是:
8 2 4 1 7 5 3 6
第
90個解是:
8 2 5 3 1 7 4 6
第
91個解是:
8 3 1 6 2 5 7 4
第
92個解是:
8 4 1 3 6 2 7 5
總結
以上是生活随笔為你收集整理的【Java】求解N皇后问题的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。