@@ -75312,7 +75312,7 @@ <h3 id="solution-1-dfs-backtracking">Solution 1: DFS (Backtracking)</h3>
75312
75312
<p>Otherwise, we enumerate each column $j$ of the current row. If there is no queen at position $(i, j)$, that is, $col[j]$, $dg[i + j]$, and $udg[n - i + j]$ are all $0$, then we can place a queen, that is, change $g[i][j]$ to <code>'Q'</code>, and set $col[j]$, $dg[i + j]$, and $udg[n - i + j]$ to $1$. Then we continue to search the next row, that is, call $dfs(i + 1)$. After the recursion ends, we need to change $g[i][j]$ back to <code>'.'</code> and set $col[j]$, $dg[i + j]$, and $udg[n - i + j]$ to $0$.</p>
75313
75313
<p>In the main function, we call $dfs(0)$ to start recursion, and finally return the answer array.</p>
75314
75314
<p>The time complexity is $O(n^2 \times n!)$, and the space complexity is $O(n)$. Here, $n$ is the integer given in the problem.</p>
75315
- <div class="tabbed-set tabbed-alternate" data-tabs="1:6 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">C#</label></div>
75315
+ <div class="tabbed-set tabbed-alternate" data-tabs="1:7 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" />< div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">C#</label><label for="__tabbed_1_7">Swift </label></div>
75316
75316
<div class="tabbed-content">
75317
75317
<div class="tabbed-block">
75318
75318
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -75689,6 +75689,88 @@ <h3 id="solution-1-dfs-backtracking">Solution 1: DFS (Backtracking)</h3>
75689
75689
<span class="w"> </span><span class="p">}</span>
75690
75690
<span class="w"> </span><span class="p">}</span>
75691
75691
<span class="w"> </span><span class="p">}</span>
75692
+ <span class="p">}</span>
75693
+ </code></pre></div></td></tr></table></div>
75694
+ </div>
75695
+ <div class="tabbed-block">
75696
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
75697
+ <span class="normal"> 2</span>
75698
+ <span class="normal"> 3</span>
75699
+ <span class="normal"> 4</span>
75700
+ <span class="normal"> 5</span>
75701
+ <span class="normal"> 6</span>
75702
+ <span class="normal"> 7</span>
75703
+ <span class="normal"> 8</span>
75704
+ <span class="normal"> 9</span>
75705
+ <span class="normal">10</span>
75706
+ <span class="normal">11</span>
75707
+ <span class="normal">12</span>
75708
+ <span class="normal">13</span>
75709
+ <span class="normal">14</span>
75710
+ <span class="normal">15</span>
75711
+ <span class="normal">16</span>
75712
+ <span class="normal">17</span>
75713
+ <span class="normal">18</span>
75714
+ <span class="normal">19</span>
75715
+ <span class="normal">20</span>
75716
+ <span class="normal">21</span>
75717
+ <span class="normal">22</span>
75718
+ <span class="normal">23</span>
75719
+ <span class="normal">24</span>
75720
+ <span class="normal">25</span>
75721
+ <span class="normal">26</span>
75722
+ <span class="normal">27</span>
75723
+ <span class="normal">28</span>
75724
+ <span class="normal">29</span>
75725
+ <span class="normal">30</span>
75726
+ <span class="normal">31</span>
75727
+ <span class="normal">32</span>
75728
+ <span class="normal">33</span>
75729
+ <span class="normal">34</span>
75730
+ <span class="normal">35</span>
75731
+ <span class="normal">36</span>
75732
+ <span class="normal">37</span>
75733
+ <span class="normal">38</span>
75734
+ <span class="normal">39</span>
75735
+ <span class="normal">40</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Solution</span> <span class="p">{</span>
75736
+ <span class="kd">private</span> <span class="kd">var</span> <span class="nv">ans</span><span class="p">:</span> <span class="p">[[</span><span class="nb">String</span><span class="p">]]</span> <span class="p">=</span> <span class="p">[]</span>
75737
+ <span class="kd">private</span> <span class="kd">var</span> <span class="nv">col</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">0</span><span class="p">)</span>
75738
+ <span class="kd">private</span> <span class="kd">var</span> <span class="nv">dg</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">0</span><span class="p">)</span>
75739
+ <span class="kd">private</span> <span class="kd">var</span> <span class="nv">udg</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">0</span><span class="p">)</span>
75740
+ <span class="kd">private</span> <span class="kd">var</span> <span class="nv">g</span><span class="p">:</span> <span class="p">[[</span><span class="nb">String</span><span class="p">]]</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="s">"."</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">0</span><span class="p">),</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">0</span><span class="p">)</span>
75741
+ <span class="kd">private</span> <span class="kd">var</span> <span class="nv">n</span><span class="p">:</span> <span class="nb">Int</span> <span class="p">=</span> <span class="mi">0</span>
75742
+
75743
+ <span class="kd">func</span> <span class="nf">solveNQueens</span><span class="p">(</span><span class="kc">_</span> <span class="n">n</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="p">[[</span><span class="nb">String</span><span class="p">]]</span> <span class="p">{</span>
75744
+ <span class="kc">self</span><span class="p">.</span><span class="n">n</span> <span class="p">=</span> <span class="n">n</span>
75745
+ <span class="n">col</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span><span class="p">)</span>
75746
+ <span class="n">dg</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
75747
+ <span class="n">udg</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
75748
+ <span class="n">g</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="s">"."</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span><span class="p">),</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span><span class="p">)</span>
75749
+ <span class="n">dfs</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
75750
+ <span class="k">return</span> <span class="n">ans</span>
75751
+ <span class="p">}</span>
75752
+
75753
+ <span class="kd">private</span> <span class="kd">func</span> <span class="nf">dfs</span><span class="p">(</span><span class="kc">_</span> <span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
75754
+ <span class="k">guard</span> <span class="n">i</span> <span class="o"><</span> <span class="n">n</span> <span class="k">else</span> <span class="p">{</span>
75755
+ <span class="kd">let</span> <span class="nv">t</span> <span class="p">=</span> <span class="n">g</span><span class="p">.</span><span class="bp">map</span> <span class="p">{</span> <span class="nv">$0</span><span class="p">.</span><span class="n">joined</span><span class="p">()</span> <span class="p">}</span>
75756
+ <span class="n">ans</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
75757
+ <span class="k">return</span>
75758
+ <span class="p">}</span>
75759
+ <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="mf">0.</span><span class="p">.<</span><span class="n">n</span> <span class="p">{</span>
75760
+ <span class="k">if</span> <span class="n">col</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">dg</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">udg</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="n">i</span> <span class="o">+</span> <span class="n">j</span><span class="p">]</span> <span class="p">==</span> <span class="mi">0</span> <span class="p">{</span>
75761
+ <span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="s">"Q"</span>
75762
+ <span class="n">col</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="mi">1</span>
75763
+ <span class="n">dg</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="mi">1</span>
75764
+ <span class="n">udg</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="n">i</span> <span class="o">+</span> <span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="mi">1</span>
75765
+ <span class="n">dfs</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
75766
+ <span class="n">col</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="mi">0</span>
75767
+ <span class="n">dg</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="mi">0</span>
75768
+ <span class="n">udg</span><span class="p">[</span><span class="n">n</span> <span class="o">-</span> <span class="n">i</span> <span class="o">+</span> <span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="mi">0</span>
75769
+ <span class="n">g</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="s">"."</span>
75770
+ <span class="p">}</span>
75771
+ <span class="p">}</span>
75772
+ <span class="p">}</span>
75773
+
75692
75774
<span class="p">}</span>
75693
75775
</code></pre></div></td></tr></table></div>
75694
75776
</div>
@@ -75723,6 +75805,11 @@ <h3 id="solution-1-dfs-backtracking">Solution 1: DFS (Backtracking)</h3>
75723
75805
75724
75806
<nav>
75725
75807
75808
+ <a href="https://github.com/klever34" class="md-author" title="@klever34">
75809
+
75810
+ <img src="https://avatars.githubusercontent.com/u/12745225?v=4&size=72" alt="klever34">
75811
+ </a>
75812
+
75726
75813
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
75727
75814
75728
75815
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments