LeetCode | 78. Subsets
来源:互联网 发布:js跨域的实现原理 编辑:程序博客网 时间:2024/06/01 18:53
Given a set of distinct integers, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,If nums = [1,2,3], a solution is:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
Solution
先加入空集,然后按照子集的大小,用递归回溯,获取全部子集。基础的递归题。
Code
#include <iostream>#include <vector>using namespace std;//当前填充的是第 Index 位,候选数字从 start 开始void f(int Index, int start, int n, int k, vector<vector<int> > &res, vector<int> &temp, vector<int> &number){ if(Index == k+1) { res.push_back(temp); temp.pop_back(); return; } for(int i=start;i<=n;i++) { if(n-start+1 < k-Index+1) break; vector<int> tt = temp; temp.push_back(number[i-1]); f(Index+1, i+1, n, k, res, temp, number); temp = tt; }}vector<vector<int>> subsets(vector<int>& nums){ int len = nums.size(); vector<vector<int> > res; vector<int> Empty; //空集也是子集 res.push_back(Empty); for(int i=1;i<=len;i++) //枚举子集的长度 { vector<vector<int> > tmp_res; vector<int> temp; f(1, 1, nums.size(), i, tmp_res, temp, nums); for(int j=0;j<tmp_res.size();j++) res.push_back(tmp_res[j]); } return res;}int main(){ int t, k; while(cin>>k) { vector<int> Input; while(k--) { cin>>t; Input.push_back(t); } vector<vector<int> > res = subsets(Input); for(int i=0;i<res.size();i++) { for(int j=0;j<res[i].size();j++) { cout<<res[i][j]<<" "; } cout<<endl; } } return 0;}
阅读全文
1 0
- LeetCode 78. Subsets
- [LeetCode]78.Subsets
- LeetCode --- 78. Subsets
- [Leetcode] 78. Subsets
- [leetcode] 78.Subsets
- 【leetcode】78. Subsets
- Leetcode 78. Subsets
- 78. Subsets LeetCode
- [leetcode] 78. Subsets
- leetcode 78. Subsets
- Leetcode 78. Subsets
- LeetCode *** 78. Subsets
- LeetCode 78. Subsets
- LeetCode-78.Subsets
- leetcode 78. Subsets
- LeetCode - 78. Subsets
- [LeetCode] 78. Subsets
- 【题解】Leetcode.78.Subsets
- Tomcat connector 实现原理
- Codeforces Round #433 B.Maxim Buys an Apartment
- 项目1——C/C++语言中参数传递的三种方式
- TensorFlow
- 正则表达式
- LeetCode | 78. Subsets
- Hook学习(四):寻找突破点-ServiceManager
- Eclipse中配置mybatis-3-config.dtd
- 如何在Mac OS X中开启或关闭显示隐藏文件命令
- 9/7 javasScript对象、构造函数、数组的迭代方法
- 一个可以过滤其他开发者日志的LogUtil工具类,团队开发中的你值得拥有!
- RxJava2的介绍
- 数学建模的一些思考
- TCP发送缓冲区