<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                **一. 題目描述** Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. The same repeated number may be chosen from C once number of times. Note:? ? All numbers (including target) will be positive integers.? ? Elements in a combination (a1, a2, …, ak) must be in non-descending order. (ie, a1 > a2 > … > ak).? ? The solution set must not contain duplicate combinations.? For example, given candidate set 10,1,2,7,6,1,5 and target 8, A solution set is: ~~~ [1, 7] [1, 2, 5] [2, 6] [1, 1, 6] ~~~ **二. 題目分析** 該題與之前的Combination Sum的解法類似,均可使用深度優先搜索來解。不同的是該題需要注意如何避免組合重復,因為不能重復,所以要跳過一樣的數字。 例如:一個整數集合:[2 2 3],當我們要使用第二個2時,我們要檢查他的前面一個2是否使用了,當未被使用時第二個2就不能使用;。 **三. 示例代碼** ~~~ #include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution { public: vector<vector<int> > combinationSum2(vector<int> &candidates, int target) { vector<int> temp; // 用于存放臨時組合 sort(candidates.begin(), candidates.end()); combinationDFS(candidates, temp, 0, target); return result; } private: vector<vector<int> > result; void combinationDFS(vector<int> &candidates, vector<int> &temp, size_t index, int target) { if (target == 0) { result.push_back(temp); return; } else { int prev = -1; for (size_t i = index; i < candidates.size(); ++i) { // 由于candidates中元素可能有重復,以下操作的意義是判斷上輪循 // 環是否選擇了candidates[i],是則跳過選擇下一個candidates元素 // 直到下標到達比prev大的元素,選擇該元素進行下一輪遞歸 if (prev == candidates[i]) continue; if (candidates[i] > target) return; prev = candidates[i]; temp.push_back(candidates[i]); combinationDFS(candidates, temp, i + 1, target - candidates[i]); temp.pop_back(); } } } }; ~~~ ![](https://box.kancloud.cn/2016-01-05_568bb5f14d58d.jpg) 四. 小結 相關題目參照:
                  <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>

                              哎呀哎呀视频在线观看