news 2026/5/28 20:35:49

【详细】经典N-皇后问题的回溯解法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【详细】经典N-皇后问题的回溯解法

问题:在n x n的棋盘大小放置n个皇后,使得这n个皇后不能相互攻击,找出所有摆放方案。

坐标系设置:

原点:棋盘的左上角。

col轴:方向向右。

row轴:方向向下。

主对角线:从原点出发的对角线,解析方程为 row = col,故主对角线的点row - col为定值0。

次对角线:与主对角线垂直的对角线,解析方程为 row = -col + n ,故次对角线的点row + col 为定值n。

用到的方法:join方法将一个数组变成字符串,map方法对数组的各元素进行相同的操作并返回新数组。

棋盘(board)使用二维数组标记,每一行是一个子数组,而output要求每一行以字符串输出,故回溯终止时,res.push(board.map((row) => row.join(''))).

/** * @param {number} n * @return {string[][]} */ var solveNQueens = function(n) { //初始化棋盘,其中'Q'代表皇后,'.'代表空位 const board = Array.from({ length: n }, () => Array(n).fill('.')); const cols = Array(n).fill(false); const diags1 = Array(2 * n - 1).fill(false); const diags2 = Array(2 * n - 1).fill(false); const res = []; backtrack(0, n, board, res, cols, diags1, diags2); return res; function backtrack(row, n, board, res, cols, diags1, diags2){ //回溯结束条件:放置完所有行 if (row === n) { res.push(board.map((row) => row.join(''))); return; } // 遍历所有列 for (let col = 0; col < n; col++) { // 计算该格子对应的主对角线和次对角线 const diag1 = row - col + n - 1; const diag2 = row + col; // 列剪枝和对角线剪枝 if(!cols[col] && !diags1[diag1] && !diags2[diag2]) { // make choice board[row][col] = 'Q'; cols[col] = diags1[diag1] = diags2[diag2] = true; // explore backtrack(row + 1, n, board, res, cols, diags1, diags2); // undo choice board[row][col] = '.'; cols[col] = diags1[diag1] = diags2[diag2] = false; } } } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 20:35:37

软件开发行业的机遇:程序员如何抓住行业发展的机会

在数字化浪潮席卷全球的当下&#xff0c;软件开发行业正经历着前所未有的变革与增长。人工智能、云计算、物联网等新兴技术的崛起&#xff0c;不仅重塑了软件开发的范式&#xff0c;更为程序员带来了众多前所未有的发展机遇。对于软件测试从业者而言&#xff0c;深入理解这些机…

作者头像 李华
网站建设 2026/5/28 20:34:32

软件开发行业的国际化:如何提升程序员的国际化能力

在全球化浪潮的席卷下&#xff0c;软件开发行业的国际化进程正以前所未有的速度推进。越来越多的软件企业将目光投向海外市场&#xff0c;试图凭借优质的产品和服务在全球舞台占据一席之地。这一趋势不仅对软件开发人员提出了更高的要求&#xff0c;也让软件测试从业者面临着全…

作者头像 李华
网站建设 2026/5/28 20:35:48

AI人工智能行业的现状:为什么说AI从业者的需求越来越大

一、AI产业爆发式增长&#xff1a;需求激增的时代底色2026年&#xff0c;人工智能产业已步入爆发式增长的黄金期&#xff0c;成为驱动全球经济复苏与产业变革的核心引擎。从全球市场来看&#xff0c;2025年AI市场规模达7575.8亿美元&#xff0c;同比增长18.7%&#xff0c;预计2…

作者头像 李华