diff --git a/solution/0000-0099/0052.N-Queens II/README.md b/solution/0000-0099/0052.N-Queens II/README.md index f78b7ece53879..05c8e6663930e 100644 --- a/solution/0000-0099/0052.N-Queens II/README.md +++ b/solution/0000-0099/0052.N-Queens II/README.md @@ -220,6 +220,34 @@ function totalNQueens(n: number): number { } ``` +#### JavaScript + +```js +function totalNQueens(n) { + const cols = Array(10).fill(false); + const dg = Array(20).fill(false); + const udg = Array(20).fill(false); + let ans = 0; + const dfs = i => { + if (i === n) { + ++ans; + return; + } + for (let j = 0; j < n; ++j) { + let [a, b] = [i + j, i - j + n]; + if (cols[j] || dg[a] || udg[b]) { + continue; + } + cols[j] = dg[a] = udg[b] = true; + dfs(i + 1); + cols[j] = dg[a] = udg[b] = false; + } + }; + dfs(0); + return ans; +} +``` + #### C# ```cs diff --git a/solution/0000-0099/0052.N-Queens II/README_EN.md b/solution/0000-0099/0052.N-Queens II/README_EN.md index 58e24c33a6dfb..de246c3a2745d 100644 --- a/solution/0000-0099/0052.N-Queens II/README_EN.md +++ b/solution/0000-0099/0052.N-Queens II/README_EN.md @@ -214,6 +214,34 @@ function totalNQueens(n: number): number { } ``` +#### JavaScript + +```js +function totalNQueens(n) { + const cols = Array(10).fill(false); + const dg = Array(20).fill(false); + const udg = Array(20).fill(false); + let ans = 0; + const dfs = i => { + if (i === n) { + ++ans; + return; + } + for (let j = 0; j < n; ++j) { + let [a, b] = [i + j, i - j + n]; + if (cols[j] || dg[a] || udg[b]) { + continue; + } + cols[j] = dg[a] = udg[b] = true; + dfs(i + 1); + cols[j] = dg[a] = udg[b] = false; + } + }; + dfs(0); + return ans; +} +``` + #### C# ```cs diff --git a/solution/0000-0099/0052.N-Queens II/Solution.js b/solution/0000-0099/0052.N-Queens II/Solution.js new file mode 100644 index 0000000000000..9e54ea5796417 --- /dev/null +++ b/solution/0000-0099/0052.N-Queens II/Solution.js @@ -0,0 +1,23 @@ +function totalNQueens(n) { + const cols = Array(10).fill(false); + const dg = Array(20).fill(false); + const udg = Array(20).fill(false); + let ans = 0; + const dfs = i => { + if (i === n) { + ++ans; + return; + } + for (let j = 0; j < n; ++j) { + let [a, b] = [i + j, i - j + n]; + if (cols[j] || dg[a] || udg[b]) { + continue; + } + cols[j] = dg[a] = udg[b] = true; + dfs(i + 1); + cols[j] = dg[a] = udg[b] = false; + } + }; + dfs(0); + return ans; +}