|
23171 | 23171 | <ul class="md-nav__list"> |
23172 | 23172 |
|
23173 | 23173 | <li class="md-nav__item"> |
23174 | | - <a href="#solution-1" class="md-nav__link"> |
| 23174 | + <a href="#solution-1-eulerian-circuit" class="md-nav__link"> |
23175 | 23175 | <span class="md-ellipsis"> |
23176 | | - Solution 1 |
| 23176 | + Solution 1: Eulerian Circuit |
23177 | 23177 | </span> |
23178 | 23178 | </a> |
23179 | 23179 |
|
@@ -81817,8 +81817,11 @@ <h2 id="description">Description</h2> |
81817 | 81817 | <h2 id="solutions">Solutions</h2> |
81818 | 81818 | <!-- solution:start --> |
81819 | 81819 |
|
81820 | | -<h3 id="solution-1">Solution 1</h3> |
81821 | | -<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><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" /><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></div> |
| 81820 | +<h3 id="solution-1-eulerian-circuit">Solution 1: Eulerian Circuit</h3> |
| 81821 | +<p>We can construct a directed graph based on the description in the problem: each point is considered as a length $n-1$ $k$-string, and each edge carries a character from $0$ to $k-1$. If there is a directed edge $e$ from point $u$ to point $v$, and the character carried by $e$ is $c$, then the last $k-1$ characters of $u+c$ form the string $v$. At this point, the edge $u+c$ represents a password of length $n$.</p> |
| 81822 | +<p>In this directed graph, there are $k^{n-1}$ points, each point has $k$ outgoing edges and $k$ incoming edges. Therefore, this directed graph has an Eulerian circuit, and the path traversed by the Eulerian circuit is the answer to the problem.</p> |
| 81823 | +<p>The time complexity is $O(k^n)$, and the space complexity is $O(k^n)$.</p> |
| 81824 | +<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><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" /><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></div> |
81822 | 81825 | <div class="tabbed-content"> |
81823 | 81826 | <div class="tabbed-block"> |
81824 | 81827 | <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
@@ -81990,6 +81993,50 @@ <h3 id="solution-1">Solution 1</h3> |
81990 | 81993 | <span class="p">}</span> |
81991 | 81994 | </code></pre></div></td></tr></table></div> |
81992 | 81995 | </div> |
| 81996 | +<div class="tabbed-block"> |
| 81997 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 81998 | +<span class="normal"> 2</span> |
| 81999 | +<span class="normal"> 3</span> |
| 82000 | +<span class="normal"> 4</span> |
| 82001 | +<span class="normal"> 5</span> |
| 82002 | +<span class="normal"> 6</span> |
| 82003 | +<span class="normal"> 7</span> |
| 82004 | +<span class="normal"> 8</span> |
| 82005 | +<span class="normal"> 9</span> |
| 82006 | +<span class="normal">10</span> |
| 82007 | +<span class="normal">11</span> |
| 82008 | +<span class="normal">12</span> |
| 82009 | +<span class="normal">13</span> |
| 82010 | +<span class="normal">14</span> |
| 82011 | +<span class="normal">15</span> |
| 82012 | +<span class="normal">16</span> |
| 82013 | +<span class="normal">17</span> |
| 82014 | +<span class="normal">18</span> |
| 82015 | +<span class="normal">19</span> |
| 82016 | +<span class="normal">20</span> |
| 82017 | +<span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">crackSafe</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">k</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="p">{</span> |
| 82018 | +<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">dfs</span><span class="p">(</span><span class="nx">u</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span> |
| 82019 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">k</span><span class="p">;</span><span class="w"> </span><span class="nx">x</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 82020 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">u</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">x</span><span class="p">;</span> |
| 82021 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">vis</span><span class="p">.</span><span class="nx">has</span><span class="p">(</span><span class="nx">e</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> |
| 82022 | +<span class="w"> </span><span class="nx">vis</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">e</span><span class="p">);</span> |
| 82023 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="nx">mod</span><span class="p">;</span> |
| 82024 | +<span class="w"> </span><span class="nx">dfs</span><span class="p">(</span><span class="nx">v</span><span class="p">);</span> |
| 82025 | +<span class="w"> </span><span class="nx">ans</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">x</span><span class="p">.</span><span class="nx">toString</span><span class="p">());</span> |
| 82026 | +<span class="w"> </span><span class="p">}</span> |
| 82027 | +<span class="w"> </span><span class="p">}</span> |
| 82028 | +<span class="w"> </span><span class="p">}</span> |
| 82029 | + |
| 82030 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">mod</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">10</span><span class="p">,</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span> |
| 82031 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vis</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Set</span><span class="o"><</span><span class="kt">number</span><span class="o">></span><span class="p">();</span> |
| 82032 | +<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">ans</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span> |
| 82033 | + |
| 82034 | +<span class="w"> </span><span class="nx">dfs</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span> |
| 82035 | +<span class="w"> </span><span class="nx">ans</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="s1">'0'</span><span class="p">.</span><span class="nx">repeat</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">));</span> |
| 82036 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span> |
| 82037 | +<span class="p">}</span> |
| 82038 | +</code></pre></div></td></tr></table></div> |
| 82039 | +</div> |
81993 | 82040 | </div> |
81994 | 82041 | </div> |
81995 | 82042 | <!-- solution:end --> |
|
0 commit comments