[leetcode]Combinations
来源:互联网 发布:自动换刀雕刻机编程 编辑:程序博客网 时间:2024/06/05 15:38
问题描述:
Given two integers n and k, return all possible combinations ofk numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]
基本思想:
回溯法
代码:
vector<int> record; //C++ vector<vector<int> >result; set<vector<int> > myset; int kNum = 0; void addSolution(){ vector<int> tmp(record.begin(),record.end()); sort(tmp.begin(),tmp.end()); if(myset.find(tmp) == myset.end()){ result.push_back(tmp); myset.insert(tmp); } } void subCombinationSum(vector<int> &cadidates,int bpos,vector<int> &base, int k){ if(kNum == k){ addSolution(); } int size = cadidates.size(); for(int i = bpos; i < size; i++){ if(base[i] == 1) continue; record.push_back(cadidates[i]); base[i] = 1; kNum++; subCombinationSum(cadidates,<span style="color:#FF0000;"><strong>i+1</strong></span>,base,k); //i+1 避免重复 record.pop_back(); base[i] = 0; kNum--; } } vector<vector<int> > combine(int n, int k) { vector<int> candidates(n); for(int i = 0; i < n; i++) candidates[i] = i+1; vector<int> base(candidates.size(),0); subCombinationSum(candidates,0,base,k); return result; }
0 0
- LeetCode: Combinations
- LeetCode: Combinations
- LeetCode Combinations
- [Leetcode] Combinations
- [LeetCode] Combinations
- Leetcode: Combinations
- LeetCode Combinations
- [Leetcode] Combinations
- [Leetcode] Combinations
- [leetcode] Combinations
- [LeetCode]Combinations
- [leetcode]Combinations
- LeetCode-Combinations
- [leetcode] Combinations
- LeetCode - Combinations
- 【Leetcode】Combinations
- Leetcode: Combinations
- 【leetcode】Combinations
- 4Sum -- leetcode
- 2014年12月22日
- dubbo 分组聚合
- 写了个代码统计工具
- UVA - 550 Multiplying by Rotation 公式题
- [leetcode]Combinations
- HDU 1010 View Code
- 深入理解ng里的scope
- AngularJS表单验证(上) 2014.6.18
- LeetCode[String]: Compare Version Numbers
- HDU 5147 Sequence II 树状数组
- 第17周项目4-日期结构体
- jdk、jre和jvm
- 上班族必懂的电脑技能