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