[51] N 皇后

复制代码
 1 /**
 2  * @param {number} n
 3  * @return {string[][]}
 4  */
 5 const solveNQueens = function (n) {
 6   const ans = [];
 7   const initialMap = Array.from(Array(n), item => new Array(n).fill('.'));
 8   const canUse = function (zmap, row, col) {
 9     for (let i = 0; i < row; i++) {
10       if (zmap[i][col] === 'Q') {
11         return false;
12       }
13       if (col - row + i >= 0 && zmap[i][col - row + i] === 'Q') {
14         return false;
15       }
16       if (col + row - i < n && zmap[i][col + row - i] === 'Q') {
17         return false;
18       }
19     }
20     return true;
21   };
22   const dps = function (zmap, row) {
23     if (row === n) {
24       ans.push(zmap.map(item => item.join('')));
25     } else {
26       for (let k = 0; k < n; k++) {
27         if (canUse(zmap, row, k)) {
28           const newMap = JSON.parse(JSON.stringify(zmap));
29           newMap[row][k] = 'Q';
30           dps(newMap, row + 1);
31         }
32       }
33     }
34   };
35   dps(initialMap, 0);
36   return ans;
37 };
复制代码

 

posted @   人恒过  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示