这是我的代码,它打印子集的元素,其总和等于给定的总和,(它仅适用于正数):
#include <bits/stdc++.h>
using namespace std;
void traverse(vector<int> vec) {
for(int a=0; a < vec.size(); a++)
cout << vec[a] << " ";
cout << endl;
}
void possible(vector<int> vec, int sum, vector<int> now) {
if(sum == 0) {
traverse(now);
}
else if(sum < 0) {
now.clear();
}
else if(sum > 0 && vec.size() > 0) {
for(int a = 0; a < vec.size(); a++) {
now.push_back(vec[a]);
vector<int> vecc(vec.begin() + a + 1, vec.end());
possible(vecc, sum - vec[a], now);
now.erase(now.end() - …Run Code Online (Sandbox Code Playgroud)