1. 程式人生 > 實用技巧 >和為K的不同數字組合

和為K的不同數字組合

問題:

給定一個int陣列A,陣列中元素互不重複,給定一個數x,求所有求和能得到x的數字組合,組合中的元素來自A,可重複使用。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

void getSet(vector<int>& nums, vector<vector<int> >& res, vector<int> &tem, int target, int index);
vector
<vector<int> > getSetOfSum(vector<int>& nums, int target) { vector<vector<int> > res; if (nums.size() == 0) return {}; sort(nums.begin(), nums.end()); vector<int> tem; getSet(nums, res, tem, target, 0); return res; } void getSet(vector<int
>& nums, vector<vector<int> >& res, vector<int> &tem, int target, int index) { if (target == 0) res.push_back(tem); for (int i = index; i < int(nums.size()); i++) { if (target - nums[i] < 0) return; tem.push_back(nums[i]); getSet(nums, res, tem, target
- nums[i], i); tem.pop_back(); } } int main() { vector<vector<int> >ans; vector<int>nums = { 3,2,6,7 }; int target = 7; ans = getSetOfSum(nums, target); int i = ans.size(); for (int j = 0; j < i; j++) { for (auto v : ans[j]) { cout << v << " "; } cout << endl; } system("pause"); return 0; }