- 思路
1、和前一题一样,只是结果换成了有多少种解法,小改动下即可 - 代码
package main
import "fmt"
func main() {
var k = 4
res := totalNQueens(k)
fmt.Println(res)
}
func totalNQueens(n int) int {
var (
sum int = 0
used = make(map[int]map[int]bool)
)
for i:=0; i<n; i++ {
used[0] = map[int]bool{i:true}
dfs(n,0,i,used,&sum)
delete(used,i)
}
return sum
}
func dfs(n int, row int, column int, used map[int]map[int]bool,sum *int){
if row == n-1 {
*sum ++
return
}
for i:=0; i<n; i++ {
if used[row+1][i] == false && judeg(used, row+1, i) {
used[row+1] = map[int]bool{i : true}
dfs(n,row+1,i,used,sum)
delete(used,row+1)
}
}
}
func judeg(used map[int]map[int]bool, willR, willC int) bool {
for row,v := range used {
for column,_ := range v {
if row+column == willR+willC || column-row == willC-willR || column == willC {
return false
}
}
}
return true
}