Skip to content

nQueens

N皇后问题 - 在n×n的棋盘上放置n个皇后,使得它们不能相互攻击。

输入配置

执行过程

步骤 1 / 95
开始N皇后问题,棋盘大小4×4
皇后
当前尝试
冲突位置

算法说明

N皇后问题:在N×N棋盘上放置N个皇后使其互不攻击。使用回溯算法,用Set记录已占用的列和对角线。时间复杂度O(N!)。

函数签名

typescript
function solveNQueens(n: number): string[][]

参数

参数名类型必填说明
nnumber棋盘大小和皇后数量

返回值

类型说明
string[][]所有可能的解决方案,每个方案是一个字符串数组

工作原理

  1. 状态记录: 使用Set记录已占用的列、主对角线、副对角线
  2. 逐行放置: 从第一行开始,尝试在每一列放置皇后
  3. 冲突检测: 检查当前位置是否与已放置的皇后冲突
  4. 回溯: 如果当前位置无法放置,回溯到上一行重新选择
  5. 收集解: 当所有行都成功放置皇后时,记录一个解

时间复杂度: O(n!)
空间复杂度: O(n)

应用场景: 约束满足问题、组合优化