【leetcode】Subsets
阿新 • • 發佈:2018-12-24
注意for迴圈的格式,這種形式經常在遍歷陣列的dfs中用到;
當dep==len時,需要return到上一步;
vector line因為對後序結果有影響,回退到上一步後,自然不需要之前已經用過的那個結果,所以需要還原標記。
#include <iostream> #include <vector> #include <algorithm> using namespace std; vector<vector<int> > ans; int len; void dfs(int dep, vector<int> line, vector<int> num) { ans.push_back(line); if(dep == len) { return; } else for(int i=dep;i<len;i++) { line.push_back(num[i]); dfs(i+1, line, num); line.pop_back(); } } vector<vector<int> > subsets(vector<int> S) { sort(S.begin(), S.end()); vector<int> line; len= S.size(); dfs(0, line, S); return ans; } int main() { vector<int> S;S.push_back(1);S.push_back(2);S.push_back(3); vector<vector<int> > a=subsets(S); for(int i=0;i<a.size();i++) { for(int j=0;j<a[i].size();j++) cout << a[i][j]; cout << endl; } return 0; }