题意:
解题思路:
思路:1. 解法同:51. N皇后
PHP代码实现:
class Solution { public $cols = []; public $pie = []; public $na = []; public $res = []; function totalNQueens($n) { $this->solve([], $n, 0); return count($this->res); } function solve($answer, $n, $i) { if ($i == $n) { array_push($this->res, $answer); return; } for ($j = 0; $j < $n; $j++) { if (in_array($j, $this->cols) || in_array($i + $j, $this->pie) || in_array($i - $j + $n, $this->na)) { continue; } array_push($this->cols, $j); array_push($this->pie, $i + $j); array_push($this->na, $i - $j + $n); $answer[$i] = $j; $this->solve($answer, $n, $i + 1); array_pop($this->cols); array_pop($this->pie); array_pop($this->na); } }}
GO代码实现:
func totalNQueens(n int) int { res := make([][]int, 0) cols := make(map[int]bool, n) pie := make(map[int]bool, n) na := make(map[int]bool, n) dfs([]int{}, n, cols, pie, na, &res) return len(res)}func dfs(rows []int, n int, cols, pie, na map[int]bool, res *[][]int) { row := len(rows) if row == n { temp := make([]int, len(rows)) copy(temp, rows) (*res) = append((*res), temp) return } for col := 0; col < n; col++ { if !cols[col] && !pie[row + col] && !na[row - col] { cols[col], pie[row + col], na[row - col] = true, true, true; dfs(append(rows, col), n, cols, pie, na, res) cols[col], pie[row + col], na[row - col] = false, false, false; } }}