Combination sum help

Hi. I am trying to solve Combination sum problem https://leetcode.com/problems/combination-sum/

I am considering 3 cases. For each index

  1. Pick and remain in same index
  2. Pick and go to next index
  3. Dont pick and go to next

But i am stuck with the implementation of that. Can someone please help me with it?
This is what i have tried till now https://pastebin.pl/view/63f6a688
Thanks in advanced

View

class Solution {
public:
vector a;
bool f(int p,int left,vector& c,vector& ans)
{
if(left<0) return 0;
if(left==0)
return 1;
//vector a;
if(f(p,left-c[p],c,ans)) a.push_back(c[p]);
f(p+1,left-c[p],c,ans);
f(p+1,left,c,ans);

}
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
   vector<vector<int>> x;
    f(0,target,candidates,x);
    return x;
}

};