Пример #1
0
void findCombination(uint8_t i, uint32_t total){
    if(total == 200) combinations++;
    else if(total < 200){
        for(uint8_t j = i; j < 8; ++j){
            findCombination(j, total + values[j]);
        }
    }
}
Пример #2
0
vector<vector<int> > Solution::combinationSum2(vector<int> &num, int target)
{
	vector<vector<int>> res;
	sort(num.begin(),num.end());
	vector<int> local;
	findCombination(res, 0, target, local, num);
	return res;
}
Пример #3
0
void Solution::findCombination(vector<vector<int> > &res, const int order, const int target, vector<int> &local, const vector<int> &num)
{
	if(target==0)
	{
		res.push_back(local);
		return;
	}
	for(int i = order;i<num.size();i++) // iterative component
	{
		if(num[i]>target) return;
		if(i&&num[i]==num[i-1]&&i>order) continue; // check duplicate combination
		local.push_back(num[i]),
		findCombination(res,i+1,target-num[i],local,num); // recursive componenet
		local.pop_back();
	}
}
Пример #4
0
uint64_t e031(){
    findCombination(0, 0);
    return combinations;
}