leetcode_078 Subsets

题目分析:求一个集合的所以子集,包括空集合全集。

解题思路:

                        递归回溯实现:

                        1)对集合中的数据进行排序,然后利用递归回溯的思想进行求解即可。

                        2)每次都对递归得到的子集进行保存即可,然后进一步递归即可。

                        解释:此题与上一个题有很大的关联,唯一区别是此题的子集数目可以去0~n,n为集合中数字数。

class Solution
{
	public:
		vector< vector<int> > subsets(vector<int> &nums)
		{
			vector< vector<int> > result;
			vector<int> temp;
			if (nums.size() == 0)
				return result;
			sort(nums.begin(), nums.end());
			dfs(0, temp, nums, result);
			return result;
		}
		void dfs(int k, vector<int> temp, vector<int> nums, vector< vector<int> > &result)
		{
			result.push_back(temp);
			for (int i = k; i < nums.size(); i++)
			{
				temp.push_back(nums[i]);
				dfs(i + 1, temp, nums, result);
				temp.pop_back();
			}
		}
};


                  

你可能感兴趣的:(leetcode_078 Subsets)