您的位置:首页 > 职场人生

44_leetcode_Subsets

2014-06-19 11:09 274 查看
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:

1:注意特殊情况,以及对数组进行排序;2:组合中的数组分别由1,2,。。。组成;3:采用递归,注意递归结束条件以及满足条件的情况。

vector<vector<int> > subsets(vector<int> &S)
{
vector<vector<int> > result;
if(S.size() == 0)
{
return result;
}

sort(S.begin(), S.end());
vector<int> temp;
unsigned long size = S.size();
result.push_back(temp);

for(int i = 1; i <= size; i++)
{
temp.clear();
subsetsCore(S, 0, i, temp, result);
}

return result;
}

void subsetsCore(vector<int> &S, int index, int number, vector<int> &temp, vector<vector<int> > &result)
{
if(number == 0)
{
result.push_back(temp);
return;
}
if(index == (int)S.size() || S.size() - index < number)
{
return;
}

temp.push_back(S[index]);
subsetsCore(S, index + 1, number - 1, temp, result);
temp.pop_back();
subsetsCore(S, index + 1, number, temp, result);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息