错误:无效地将void表达式用于int类型函数



我试图解决一个问题,在这个问题中,我们必须找到数组/向量的所有子集,这些子集的总和等于用户定义的数字。我决定用向量递归求解。这是代码-

#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);

它返回无效。

相关内容

  • 没有找到相关文章

最新更新