我试图解决一个问题,在这个问题中,我们必须找到数组/向量的所有子集,这些子集的总和等于用户定义的数字。我决定用向量递归求解。这是代码-
#include <bits/stdc++.h>
using namespace std;
vector<int> v1{1,2,3};
int n = v1.size();
int sum = 4;
int subset(vector<int> cur, int i);
int main() {
vector <int> v;
cout<<subset(v,0);
return 0;
}
int subset(vector<int> cur, int i = 0){
if(i == n && accumulate(cur.begin(), cur.end(), 0) == sum)
return 1;
else if(i == n && accumulate(cur.begin(), cur.end(), 0) != sum)
return 0;
return (subset(cur, i+1) + subset(cur.push_back(v1[i]), i+1));
}
我收到一个错误"无效使用void表达式",即使子集函数是int类型,并且它正在返回一个整数值。我哪里错了?
return (subset(cur, i+1) + subset(cur.push_back(v1[i]), i+1));
行错误
cur.push_back
有声明-void push_back (const value_type& val);
它返回无效。