| |
| |
| |
| |
| |
| let solveNQueens = function (n) { |
| let res = [] |
| |
| let columns = [] |
| |
| |
| let dia1 = [] |
| |
| |
| let dia2 = [] |
| |
| |
| let putQueen = (rowIndex, row) => { |
| if (rowIndex === n) { |
| |
| res.push(row) |
| return |
| } |
| |
| |
| for (let columnIndex = 0; columnIndex < n; columnIndex++) { |
| |
| let columnNotConflict = !columns[columnIndex] |
| |
| let dia1NotConflict = !dia1[rowIndex + columnIndex] |
| |
| let dia2NotConflict = !dia2[rowIndex - columnIndex] |
| |
| if (columnNotConflict && dia1NotConflict && dia2NotConflict) { |
| columns[columnIndex] = true |
| dia1[rowIndex + columnIndex] = true |
| dia2[rowIndex - columnIndex] = true |
| |
| putQueen(rowIndex + 1, row.concat(columnIndex)) |
| |
| columns[columnIndex] = false |
| dia1[rowIndex + columnIndex] = false |
| dia2[rowIndex - columnIndex] = false |
| } |
| } |
| } |
| |
| putQueen(0, []) |
| |
| return res |
| } |
| |
| function generateBoard(row) { |
| let n = row.length |
| let res = [] |
| |
| |
| for (let y = 0; y < n; y++) { |
| let cur = "" |
| |
| |
| for (let x = 0; x < n; x++) { |
| |
| |
| |
| |
| |
| |
| if (x === row[y]) cur += "Q" |
| else cur += "." |
| } |
| |
| res.push(cur) |
| } |
| return res |
| } |
| |
| console.log(solveNQueens(4)) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战