《Cracking the Coding Interview》——第9章:递归和动态规划——题目4
2014-03-20 03:11
387 查看
2014-03-20 03:08
题目:给定一个集合,返回其幂集。
解法:DFS。
代码:
题目:给定一个集合,返回其幂集。
解法:DFS。
代码:
// 9.4 Return all subsets of a set #include <cstdio> #include <vector> using namespace std; void getSubsets(const vector<int> &v, int idx, vector<int> &buffer, vector<vector<int> > &res) { if (idx == (int)v.size()) { res.push_back(buffer); } else { getSubsets(v, idx + 1, buffer, res); buffer.push_back(v[idx]); getSubsets(v, idx + 1, buffer, res); buffer.pop_back(); } } int main() { int i, j; vector<vector<int> > res; vector<int> v; vector<int> buffer; int n; while (scanf("%d", &n) == 1 && n > 0) { v.resize(n); for (i = 0; i < n; ++i) { scanf("%d", &v[i]); } getSubsets(v, 0, buffer, res); for (i = 0; i < (int)res.size(); ++i) { printf("["); for (j = 0; j < (int)res[i].size(); ++j) { if (j == 0) { printf("%d", res[i][j]); } else { printf(" %d", res[i][j]); } } printf("]\n"); res[i].clear(); } res.clear(); buffer.clear(); v.clear(); } return 0; }
相关文章推荐
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目1
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目2
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目3
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目5
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目6
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目7
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目8
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目9
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目10
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目11
- 《Cracking the Coding Interview》——第13章:C和C++——题目9
- 《Cracking the Coding Interview》——第16章:线程与锁——题目4
- 《Cracking the Coding Interview》——第17章:普通题——题目7
- 《Cracking the Coding Interview》——第18章:难题——题目2
- 《Cracking the Coding Interview》——第1章:数组和字符串——题目3
- 《Cracking the Coding Interview》——第4章:树和图——题目4
- 《Cracking the Coding Interview》——第6章:智力题——题目2
- 《Cracking the Coding Interview》——第7章:数学和概率论——题目6
- 《Cracking the Coding Interview》——第17章:普通题——题目8
- 《Cracking the Coding Interview》——第18章:难题——题目3