[52] N 皇后 II

 1 /**
 2  * @param {number} n
 3  * @return {number}
 4  */
 5 var totalNQueens = function (n) {
 6   let ans = 0;
 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 = ans + 1
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 @ 2023-11-30 16:26  人恒过  阅读(11)  评论(0)    收藏  举报