您的位置:首页 > 其它

《Cracking the Coding Interview》——第9章:递归和动态规划——题目4

2014-03-20 03:11 387 查看
2014-03-20 03:08

题目:给定一个集合,返回其幂集。

解法: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐