搜就完事了,沒想著優化。唉~太菜,給一個位置標記位置,然后通過該位置向該位置及該位置以下尋找,這樣不存在什么重復回去查找問題。
如果總結大于目標值,回溯一下,如果不大于繼續。
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();}} };
?