思路 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 }