您的位置:首页 > 其它

Leetcode 216 Combination Sum III

2018-02-28 19:14 411 查看

1. 问题描写叙述

  找出全部k个数字的组合,使它们的和为n。

设全部的数都为1~9,且没有反复数。结果要保持升序。

  


2. 方法与思路

  採用回溯法能够非常好地解决问题。

  

class Solution {
public:
int target,kk;
vector<vector<int> > v;
public:
void traceback(int start, int cnt, int sum, vector<int> nums)
{
if(cnt > kk || sum > target)
{
return;
}
else if(cnt == kk && sum == target)
{
v.push_back(nums); //符合条件,插入结果集
return;
}

for(int i = start+1; i < 10; i++)
{
nums.push_back(i);
traceback(i,cnt+1,sum+i,nums);
nums.pop_back(); //还原初始状态
}

}
vector<vector<int> > combinationSum3(int k, int n) {
target = n;
kk = k;
vector<int> nums;
traceback(0,0,0,nums);

return v;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: