返回某整数集合的所有子集
2014-11-16 23:59
176 查看
题目:《程序员面试金典(第5版)》P226
编写一个方法,返回某集合的所有子集
提示:
方法一:迭代法,每增加一个元素,就在已生成子集的基础上,给每一个子集添加该元素,形成新的子集。
方法二:递归法。
编写一个方法,返回某集合的所有子集
提示:
方法一:迭代法,每增加一个元素,就在已生成子集的基础上,给每一个子集添加该元素,形成新的子集。
vector< vector<int>> GetSubSets(vector<int> num) { vector< vector<int>> res; res.push_back({}); if (num.empty()) { return res; } vector<int> tmp; tmp.push_back(num[0]); res.push_back(tmp); for (int i = 1; i < num.size(); i++) { int len = res.size(); for (int j = 0; j < len; j++) { tmp = res[j]; tmp.push_back(num[i]); res.push_back(tmp); } } return res; }
方法二:递归法。
void GetSubSets_Core(const vector<int> &num, int index, vector<int> cur, vector< vector<int>> &res) { if (index < num.size() - 1) { GetSubSets_Core(num, index + 1, cur, res); cur.push_back(num[index]); GetSubSets_Core(num, index + 1, cur, res); } else { res.push_back(cur); cur.push_back(num[index]); res.push_back(cur); } } vector< vector<int>> GetSubSets(const vector<int> &num) { vector< vector<int>> res; vector<int> cur; if (num.empty()) { res.push_back(cur); return res; } GetSubSets_Core(num, 0, cur, res); return res; }
相关文章推荐
- 给定一个可能包含重复的整数的集合,S返回所有可能的子集。
- 给定一个集合和一个正整数c,判定是否存在该集合的子集,使其所有元素的和等于给定的正整数c?
- 请编写一个方法,返回某集合的所有非空子集。
- 【数据结构】求一个整数集合的所有子集
- 生成一个整数集合的所有子集
- 9.9递归和动态规划(四)——返回某集合的所有子集
- 程序员面试金典(动态规划):返回某集合的所有子集(java解法)
- 编写一个方法,返回某集合的所有子集。
- 编写一个方法,返回某集合的所有子集
- 给定一组不同的整数,S返回所有可能的子集。
- 返回集合的所有子集
- 返回某集合的所有子集
- 返回某集合的所有子集
- 给定两个整数n和k,返回1 ... n中k个数的所有可能组合。
- 求一个集合的所有子集 输出一个数所有平方和的情况 背包问题的递归解决
- 不包含重复元素的集合S,求其所有子集
- 给一个整数数组,输出所有可能的子集
- 给定一个集合,输出它的所有子集
- 给定不同数字的集合,返回所有可能的排列。
- 求一个集合的所有子集问题