Subsets
2014-12-22 16:49 李涛的技术博客 阅读(147) 评论(0) 编辑 收藏 举报Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, if S = [1,2,3], a solution is: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ].
回溯法,代码如下:
void subset(vector<int> vecInt) { sort(vecInt.begin(), vecInt.end()); vector<int> vecWorker; subsetsHelper(vecWorker, vecInt, 0); } void subsetHelper(vector<int>& vecWorker, const vector<int>& vecInt, int pos) { outputToResult(vecWorker); for (int i = pos; i < vecInt.length(); i++) { vecWorker.push_back(vecInt[i]); subsetHelper(vecWorker, vecInt, i+1); vecWorker.pop_back(); } }