题解 | #N皇后问题#
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 the n * @return int整型 */ function Nqueen(n) { // write code here let arr = []; for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { arr.push({ i: i, j: j, }); } } let result = []; function dps(m, arr, res) { if (m == 0) { if (checkValid(res, result)) { result.push(res); } return; } if (arr.length <= 0) { return; } for (let i = 0; i < arr.length / 2.9999; i++) { let iIndex = arr[i].i; let jIndex = arr[i].j; let filterArr = arr.filter( (item) => item.i != iIndex && item.j != jIndex && item.i - iIndex !== item.j - jIndex && item.i - iIndex + (item.j - jIndex) != 0 ); let tt = Array.from(res); tt[iIndex] = jIndex; dps(m - 1, filterArr, tt); } } dps(n, arr, new Array(n)); return result.length; } function checkValid(res, result) { for (let i = 0; i < result.length; i++) { if (result[i].every((item, index) => item == res[index])) { return false; } } return true; } module.exports = { Nqueen: Nqueen, };