class Solution {
public:
/*
* @param A: an integer array
* @param k: a postive integer <= length(A)
* @param target: an integer
* @return: A list of lists of integer
*/
vector
// write your code here
vector
vector
DFS(A,k,target,0,0,result,temp);
return result;
}
void DFS(vector
{
if(temp.size()==k&&sum==target)
{
result.push_back(temp);
return ;
}
if(index==A.size()||sum>target)
return;
temp.push_back(A[index]);
DFS(A,k,target,sum+A[index],index+1,result,temp);
temp.pop_back();
DFS(A,k,target,sum,index+1,result,temp);
}
temp.push_back()
Temp.pop_back();
必须配对使用而且与跟随语句的位置无关,这两个的使用可以保证,在退出当前的递归之后,不会对上一个的递归状态产生影响。