搜就完事了,没想着优化。唉~太菜,给一个位置标记位置,然后通过该位置向该位置及该位置以下寻找,这样不存在什么重复回去查找问题。
如果总结大于目标值,回溯一下,如果不大于继续。
class Solution { public:vector<vector<int>> res;vector<int> temp; vector<vector<int>> combinationSum(vector<int>& candidates, int target) {dfs(candidates,0,target,0);return res;}void dfs(vector<int> can,int sum,int tag,int start){if(sum>tag)return;else if(sum==tag){res.push_back(temp);return;}else for(int i=start;i<can.size();i++){temp.push_back(can[i]);dfs(can,sum+can[i],tag,i);temp.pop_back();}} };