File tree 1 file changed +68
-0
lines changed
1 file changed +68
-0
lines changed Original file line number Diff line number Diff line change
1
+ ``` javascript
2
+ var result = [];
3
+ let n = 0
4
+ const cal8queens = (row ) => {
5
+ // 终止条件
6
+ if (row === 8 ){
7
+ console .log (result)
8
+ n++ ;
9
+ return ;
10
+ }
11
+ // 每一列的判断
12
+ for (let column = 0 ; column < 8 ; column++ ){
13
+ // 判断当前的列位置是否合适
14
+ if (isOkCulomn (row,column)){
15
+ // 保存皇后的位置
16
+ result[row] = column;
17
+ // 对下一行寻找数据
18
+ cal8queens (row + 1 );
19
+ }
20
+ // 此循环结束后,继续遍历下一种情况,就会形成一种枚举所有可能性
21
+ }
22
+ }
23
+
24
+ // 判断当前列是否合适
25
+ const isOkCulomn = (row ,column ) => {
26
+ // 设置左上角
27
+ let leftcolumn = column - 1 ;
28
+ let rightcolumn = column + 1 ;
29
+
30
+ for (let i = row - 1 ;i >= 0 ; i-- ){
31
+ // 判断当前格子正上方是否有重复
32
+ if (result[i] === column) return false ;
33
+
34
+ // 判断当前格子左上角是否有重复
35
+ if (leftcolumn >= 0 ){
36
+ if (result[i] === leftcolumn) return false ;
37
+ }
38
+
39
+ // 判断当前格式右上角是否有重复
40
+ if (leftcolumn < 8 ){
41
+ if (result[i] === rightcolumn) return false ;
42
+ }
43
+
44
+ // 继续遍历
45
+ leftcolumn -- ;
46
+ rightcolumn ++ ;
47
+ }
48
+ return true ;
49
+ }
50
+
51
+ // 打印八皇后
52
+ const print = (result )=> {
53
+ for (let i = 0 ;i < 8 ; i++ ){
54
+ for (let j = 0 ;j < 8 ; j++ ){
55
+ if (result[i] === j){
56
+ console .log (' Q' + ' ' )
57
+ }else {
58
+ console .log (' *' + ' ' )
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ // 测试
65
+ cal8queens (0 );
66
+ console .log (n)
67
+ ```
68
+
You can’t perform that action at this time.
0 commit comments