-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
89 lines (68 loc) · 1.21 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main
import "fmt"
var res [][]int
var count = 4
func main() {
cols := []int {}
res =[][]int{}
SetQueen(0,cols)
fmt.Println(res)
fmt.Println(len(res))
CreateTableFrom(res)
}
func SetQueen(row int,cols []int) {
if count == len(cols) {
res = append(res, cols)
return
}
for col := 0; col < count; col++ {
if isValid(cols, row, col) {
SetQueen(row+1,append(cols, col))
}
}
}
func isValid(cols []int, row, col int) bool {
for r, c := range cols {
if c == col {
return false
}
if r-c == row-col {
return false
}
if r+c == row+col {
return false
}
}
return true
}
func CreateTableFrom(res [][]int){
table := [][]int {
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
}
for _,resualt := range res {
for col ,row := range resualt {
table[col][row] = 1
}
for _,row := range table {
fmt.Println(row)
}
fmt.Println("------------------------")
table = [][]int {
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
}
}
}