nQueens
N皇后问题 - 在n×n的棋盘上放置n个皇后,使得它们不能相互攻击。
输入配置
执行过程
开始N皇后问题,棋盘大小4×4
♛ 皇后
当前尝试
冲突位置
算法说明
N皇后问题:在N×N棋盘上放置N个皇后使其互不攻击。使用回溯算法,用Set记录已占用的列和对角线。时间复杂度O(N!)。
函数签名
typescript
function solveNQueens(n: number): string[][]参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
n | number | 是 | 棋盘大小和皇后数量 |
返回值
| 类型 | 说明 |
|---|---|
string[][] | 所有可能的解决方案,每个方案是一个字符串数组 |
工作原理
- 状态记录: 使用Set记录已占用的列、主对角线、副对角线
- 逐行放置: 从第一行开始,尝试在每一列放置皇后
- 冲突检测: 检查当前位置是否与已放置的皇后冲突
- 回溯: 如果当前位置无法放置,回溯到上一行重新选择
- 收集解: 当所有行都成功放置皇后时,记录一个解
时间复杂度: O(n!)
空间复杂度: O(n)
应用场景: 约束满足问题、组合优化