【数组】78. 子集

题目:

 

解答:

回溯方法:

 1 class Solution {
 2 public:
 3     vector<vector<int>> res;
 4 
 5     vector<vector<int>> subsets(vector<int>& nums) 
 6     {
 7         // 记录走过的路径
 8         vector<int> track;
 9         backtrack(nums, 0, track);
10         return res;
11     }
12 
13     void backtrack(vector<int>& nums, int start, vector<int>& track) 
14     {
15         res.push_back(track);
16         // 注意 i 从 start 开始递增
17         for (int i = start; i < nums.size(); i++) 
18         {
19             // 做选择
20             track.push_back(nums[i]);
21             // 回溯
22             backtrack(nums, i + 1, track);
23             // 撤销选择
24             track.pop_back();
25         }
26     }
27 };

 

posted @ 2020-05-05 16:05  梦醒潇湘  阅读(169)  评论(0)    收藏  举报