C++ 排序+深度优先搜索 题解 | #牛群喂食#
牛群喂食
https://www.nowcoder.com/practice/591c222d73914c1ba031a660db2ef73f
#include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param candidates int整型vector * @param target int整型 * @return int整型vector<vector<>> */ set<vector<int>> s_v; vector<vector<int> > ans; void dfs(vector<int>& candidates, int target, vector<int> v, int sum) { int len = candidates.size(); if(sum==target) { sort(v.begin(),v.end()); if(s_v.count(v)==0) { s_v.emplace(v); ans.emplace_back(v); } return; } if(sum > target) return; for(int i=0; i<len; ++i) { v.emplace_back(candidates[i]); dfs(candidates, target, v, sum + candidates[i]); v.pop_back(); } return; } vector<vector<int> > cowCombinationSum(vector<int>& candidates, int target) { // write code here sort(candidates.begin(), candidates.end()); vector<int> v; dfs(candidates, target, v, 0); return ans; } };