fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. void f(vector<int>&v,vector<int>&ds,int idx, int sum, int k, int& cnt){
  4. if(idx>=v.size() || sum==k){
  5. if(sum==k)
  6. {cnt++;
  7. for(int i=0;i<ds.size();i++)
  8. cout<<ds[i]<<" ";
  9. cout<<endl;
  10. return;}
  11. return;
  12. }
  13. sum=sum+v[idx]; ds.push_back(v[idx]);
  14. f(v,ds,idx+1,sum,k,cnt);
  15. sum=sum-v[idx]; ds.pop_back();
  16. f(v,ds,idx+1,sum,k,cnt);
  17. }
  18. int main() {
  19. vector<int>v= {3,1,2,1};
  20. vector<int>ds; int sum=0; int idx=0; int k=4; int cnt=0;
  21. f(v,ds,idx,sum,k,cnt);
  22. cout<<" count is "<<cnt<<endl;
  23. }
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
3 1 
3 1 
1 2 1 
 count is 3