vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { vector<vector<int>> ret; vector<int> tmpRet; sort(candidates.begin(),candidates.end()); csHelper(0,ret,candidates,target,tmpRet); return ret; }
void csHelper(int begin, vector<vector<int>> &ret, vector<int> &candidates, int target, vector<int> tmpRet){ if(!target){ ret.push_back(tmpRet); return; } for(int i=begin;i<candidates.size()&&candidates[i]<=target;++i){ if(i>begin&&candidates[i]==candidates[i-1]) continue; tmpRet.push_back(candidates[i]); csHelper(i+1,ret,candidates,target-candidates[i],tmpRet); tmpRet.pop_back(); } }
void User::execute() { switch( d->mode ) { case UserData::Creating: createHelper(); break; case UserData::Refreshing: refreshHelper(); break; case UserData::ChangingSecret: csHelper(); break; case UserData::LoungingAround: break; } }
// Build default ignored list void BuildDefaultIgnoredList() { TDEBUG_ENTER("BuildDefaultIgnoredList"); CSHelper csHelper(myCriticalSection, true); std::string userCvsIgnoreFile; GetHomeDirectory(userCvsIgnoreFile); userCvsIgnoreFile = EnsureTrailingDelimiter(userCvsIgnoreFile) + ".cvsignore"; FileChangeParams myFcp = GetFileChangeParams(userCvsIgnoreFile); // Update every dwUpdateIgnoredListInterval seconds if (GetTickCount() > defIgnoreListTimeStamp + 1000 * dwUpdateIgnoredListInterval) { DoUpdateIgnoredList(); fcpCvsignore = myFcp; } // Update if .cvsignore in home dir has changed else if (fcpCvsignore != myFcp) { DoUpdateIgnoredList(); fcpCvsignore = myFcp; } }