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<vector<int>> kSumII(vector<int> &A, int k, int target) {
? ? ? ? // write your code here
? ? ? ? vector<vector<int> >result;
? ? ? ? vector<int>temp;
? ? ? ? DFS(A,k,target,0,0,result,temp);
? ? ? ? return result;
? ? ? ?
? ? }
? ? void? DFS(vector<int> &A, int k, int target,int sum,int index,vector<vector<int> >&result,vector<int>&temp)
? ? {
? ? ? ? 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();
必須配對使用而且與跟隨語句的位置無關(guān)惕澎,這兩個(gè)的使用可以保證,在退出當(dāng)前的遞歸之后对省,不會對上一個(gè)的遞歸狀態(tài)產(chǎn)生影響牙甫。