集合中的子集(三种方法)
来源:互联网 发布:如何使用万方数据库 编辑:程序博客网 时间:2024/06/05 05:53
给定一个集合,求出这个集合的所有子集,比如:集合{1,2,3},子集为{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}。
解法一:递归void subsets(vector<vector<int>> &res, vector<int> &path,vector<int> &nums, int start){res.push_back(path);for (int i = start; i < nums.size(); ++i){path.push_back(nums[i]);subsets(res, path, nums, i + 1);path.pop_back();}}vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> res;vector<int> path;subsets(res, path, nums, 0);return res;}解法二:循环vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> res = { {} };for (int i = 0; i < nums.size(); ++i){int size = res.size();for (int j = 0; j < size; ++j){res.push_back(res[j]);res[j].push_back(nums[i]);}}return res;}解法三:位向量vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> res;if (nums.empty())return res;int size = nums.size();int num = pow(2, size);res.resize(num);for (int i = 0; i < size; ++i){for (int j = 0; j < num; ++j){if ((j >> i) & 1){res[j].push_back(nums[i]);}}}return res;}
0 0
- 集合中的子集(三种方法)
- 输出给定集合的所有真子集的三种方法之比较
- 子集生成(三种方法)
- 生成所有子集的三种方法
- 子集生成的三种方法
- 转载:三种实现集合求子集合算法
- 求集合中的所有子集
- 两种方法寻找一个集合的所有子集
- 用递归方法求集合的子集
- 两种求集合所有子集的方法
- 递归求集合子集(两种方法实现(数组,链表))
- 集合中的子集2(含有重复元素)
- 编写一个方法,返回某集合的所有子集。
- 编写一个方法,返回某集合的所有子集
- ACMjava子集生成的三种方法,增量构造,辅助位向量,二进制法
- 【算法学习笔记】14.暴力求解法02 子集生成的三种方法
- 子集问题的三种解法
- 子集生成(三种办法)
- java学习3
- 【2016 Esri全球用户大会主题看点】_可视化&分析APP—Insights for ArcGIS
- iOS 键盘
- OAUTH协议简介
- CSS :hover 伪类
- 集合中的子集(三种方法)
- AJAX编程技巧:"文档的顶层无效"的错误处理?
- Perl正则表达式 模式匹配
- hive & hue 中文乱码的问题
- unity优化4-从Draw Calls到GC
- html运行原理
- 程序员要娶老婆
- 字符串的排列
- dalvik的Heap和Stack