您的位置:首页 > 其它

LeetCode: Subsets

2012-10-08 14:04 369 查看
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],
[]
]


无重复数的全组合。

class Solution {
public:
void comb(vector<int> &S, vector<vector<int> > &result,
vector<int> &tmp, int size, int n, int pos)
{
vector<int> v;
for (int i = 0; i < n; ++i)
v.push_back(tmp[i]);
result.push_back(v);

for (int i = pos; i < size; ++i)
{
tmp
= S[i];
comb(S, result, tmp, size, n+1, i+1);
}
}

vector<vector<int> > subsets(vector<int> &S) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > result;
int nSize = S.size();
sort(S.begin(), S.end());

vector<int> tmp(nSize);
comb(S, result, tmp, nSize, 0, 0);
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: