描述
給出一組候選數字(c)和目標數字(t),找出c中所有的組合,使組合中數字的和為t。c中每個數字在每個組合中只能使用一次。
所有的數字(包括目標數字)均為正整數。
元素組合(a1, a2, … , ak)必須是非降序(ie, a1 ≤ a2 ≤ … ≤ ak)。
解集不能包含重複的組合。
樣例給出乙個例子,候選數字集合為[10,1,6,7,2,1,5] 和目標數字 8 ,
解集為:[[1,7],[1,2,5],[2,6],[1,1,6]]
題目鏈結
分析
先排序,然後遞迴呼叫,在滿足num.size() == 0 || target <= 0條件時,遞迴結束。最後因為裡面含有重複的元素,所以刪除掉重複的即可。
程式
class solution
vectorb;
b.assign(num.begin()+1, num.end());
tmp.push_back(num[0]);
combinationsum(b, target-num[0]);
tmp.pop_back();
combinationsum(b, target);
}vector> combinationsum2(vector&num, int target)
};
153 數字組合 II
153.數字組合 ii 給出一組候選數字 c 和目標數字 t 找出c中所有的組合,使組合中數字的和為t。c中每個數字在每個組合中只能使用一次。注意事項 您在真實的面試中是否遇到過這個題?yes 樣例給出乙個例子,候選數字集合為 10,1,6,7,2,1,5 和目標數字8,解集為 1,7 1,2,5 ...
153 數字組合 II
153.數字組合 ii 給定乙個陣列 num 和乙個整數 target.找到 num 中所有的數字之和為 target 的組合.樣例樣例 1 輸入 num 7,1,2,5,1,6,10 target 8 輸出 1,1,6 1,2,5 1,7 2,6 樣例 2 輸入 num 1,1,1 target ...
數字組合問題
題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。方法一 列出取值範圍內所有資料,分別檢查是否符合條件 public static void calculatenum1...