<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **深度優先搜索的用法——求數組部分和** <table border="1" cellspacing="0" cellpadding="0" width="80%"><tbody><tr><td valign="top"><p><strong>問題主題:</strong>求數組部分和</p></td></tr><tr><td valign="top"><p><strong>問題描述:</strong></p><p>給定整數a1,a2, … an,判斷能否從中選出若干個數,使得它們的和為k。</p><p><strong>限制條件:</strong></p><p>1&lt;=n&lt;=20</p><p>-10<sup>8</sup>&lt;=a<sub>i</sub>&lt;=10<sup>8</sup></p><p>-10<sup>8</sup>&lt;=k&lt;=10<sup>8</sup></p></td></tr><tr><td valign="top"><p><strong>樣例:</strong></p><p>輸入</p><p>n=4</p><p>a={1,2,4,7}</p><p>k=13</p><p>輸出</p><p>Yes (13=2+4+7)</p><p>輸入</p><p>n=4</p><p>a={1,2,4,7}</p><p>k=15</p><p>輸出</p><p>????No</p></td></tr></tbody></table> ### 【解法一】 ### 解題分析: ???用遞歸的方法實現深度優先搜索,從a0開始依次判斷,決定ai加入或不加入,對每一個種組合進行判斷,決定是否存在和為k的情況。 ### 程序實現: **C++** <table border="1" cellspacing="0" cellpadding="0" width="80%"><tbody><tr><td valign="top"><p align="left"><span style="color:blue">#include</span>?<span style="color:rgb(163,21,21)">"stdafx.h</span>"</p><p align="left"><span style="color:blue">#include</span>?<span style="color:rgb(163,21,21)">"iostream</span>"</p><p align="left">?</p><p align="left"><span style="color:blue">using</span>?<span style="color:blue">namespace</span>?std;</p><p align="left">?</p><p align="left"><span style="color:blue">const</span>?<span style="color:blue">int</span>?MAX = 10;</p><p align="left"><span style="color:blue">int</span>?????result;</p><p align="left"><span style="color:blue">int</span>?a[MAX];</p><p align="left"><span style="color:blue">int</span>?sum = 0;</p><p align="left">?</p><p align="left"><span style="color:blue">bool</span>?resolve(<span style="color:blue">int</span>?a[],?<span style="color:blue">int</span>?n,?<span style="color:blue">int</span>?i,?<span style="color:blue">int</span>?sum) ;</p><p align="left">?</p><p align="left"><span style="color:blue">int</span>?_tmain(<span style="color:blue">int</span>?argc, _TCHAR*?argv[]) {</p><p align="left">?????????<span style="color:blue">int</span>?n;</p><p align="left">?????????cout?&lt;&lt;?<span style="color:rgb(163,21,21)">"</span><span style="color:rgb(163,21,21)">請</span><span style="color:rgb(163,21,21)">?</span><span style="color:rgb(163,21,21)">輸</span><span style="color:rgb(163,21,21)">o?</span><span style="color:rgb(163,21,21)">入</span><span style="color:rgb(163,21,21)">¨?n</span><span style="color:rgb(163,21,21)">和</span><span style="color:rgb(163,21,21)">¨a</span><span style="color:rgb(163,21,21)">結</span><span style="color:rgb(163,21,21)">¨¢</span><span style="color:rgb(163,21,21)">果</span><span style="color:rgb(163,21,21)">?</span><span style="color:rgb(163,21,21)">的</span><span style="color:rgb(163,21,21)">ì?</span><span style="color:rgb(163,21,21)">大</span><span style="color:rgb(163,21,21)">?¨?</span><span style="color:rgb(163,21,21)">小</span><span style="color:rgb(163,21,21)">?:"</span>?&lt;&lt;endl;</p><p align="left">?????????cin?&gt;&gt; n &gt;&gt; result;</p><p align="left">?????????cout?&lt;&lt;?<span style="color:rgb(163,21,21)">"</span><span style="color:rgb(163,21,21)">請</span><span style="color:rgb(163,21,21)">?</span><span style="color:rgb(163,21,21)">輸</span><span style="color:rgb(163,21,21)">o?</span><span style="color:rgb(163,21,21)">入</span><span style="color:rgb(163,21,21)">¨?n</span><span style="color:rgb(163,21,21)">個</span><span style="color:rgb(163,21,21)">?</span><span style="color:rgb(163,21,21)">數</span><span style="color:rgb(163,21,21)">oy:"</span>?&lt;&lt;endl;</p><p align="left">?????????<span style="color:blue">for</span>(<span style="color:blue">int</span>?i=0;?i&lt;n;?i++) {</p><p align="left">???????????????????cin?&gt;&gt; a[i];</p><p align="left">?????????}</p><p align="left">?????????<span style="color:blue">if</span>(resolve(a, n, 0, sum))</p><p align="left">???????????????????cout?&lt;&lt;?<span style="color:rgb(163,21,21)">"Yes"</span>?&lt;&lt;endl;</p><p align="left">?????????<span style="color:blue">else</span></p><p align="left">???????????????????cout?&lt;&lt;?<span style="color:rgb(163,21,21)">"No"</span>?&lt;&lt;?endl;</p><p align="left">?????????<span style="color:blue">return</span>?0;</p><p align="left">}</p><p align="left">?</p><p align="left"><span style="color:blue">bool</span>?resolve(<span style="color:blue">int</span>?a[],?<span style="color:blue">int</span>?n,?<span style="color:blue">int</span>?i,?<span style="color:blue">int</span>?sum) {</p><p align="left">?????????<span style="color:blue">if</span>(i?&gt;= n)</p><p align="left">???????????????????<span style="color:blue">return</span>?sum == result;</p><p align="left">?????????<span style="color:green">//</span><span style="color:green">不</span><span style="color:green">?</span><span style="color:green">選</span><span style="color:green">?a[i</span>]</p><p align="left">?????????<span style="color:blue">if</span>(resolve(a, n, i+1, sum))</p><p align="left">???????????????????<span style="color:blue">return</span>?<span style="color:blue">true</span>;</p><p align="left">?????????<span style="color:green">//</span><span style="color:green">加</span><span style="color:green">¨?</span><span style="color:green">上</span><span style="color:green">|?a[i</span>]</p><p align="left">?????????<span style="color:blue">if</span>(resolve(a, n, i+1,?sum+a[i]))</p><p align="left">???????????????????<span style="color:blue">return</span>?<span style="color:blue">true</span>;</p><p align="left">?????????<span style="color:blue">return</span>?<span style="color:blue">false</span>;</p><p align="left">}</p><p>?</p></td></tr></tbody></table> **Java** <table border="1" cellspacing="0" cellpadding="0" width="80%"><tbody><tr><td valign="top"><p/><pre code_snippet_id="142845" snippet_file_name="blog_20140105_1_6613798" name="code" class="java">/** * User: luoweifu * Date: 14-1-7 * Time: 上午11:33 */ public class PartSum { private int array[]; private int result; public PartSum() { } public PartSum(int[] array, int result) { this.array = array; this.result = result; } public void setArray(int[] array) { this.array = array; } public void setResult(int result) { this.result = result; } public boolean resolve(int[] array, int i, int sum) { int n = array.length; if(i &gt;= n) return sum == result; if(resolve(array, i+1, sum)) return true; if(resolve(array, i+1, sum+array[i])) return true; return false; } public void partsumResolve() { if(resolve(array, 0, 0)) System.out.println("Yes"); else System.out.println("No"); } public static void main(String args[]) { PartSum partSum = new PartSum(new int[]{1,2,4,7}, 13); partSum.partsumResolve(); partSum.setResult(15); partSum.partsumResolve(); } }</pre><br/><br/><p/></td></tr></tbody></table> **** ### 算法復雜度: ???時間復雜度O(2n)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看