Combinations
来源:互联网 发布:js字符串替换换行符 编辑:程序博客网 时间:2024/05/16 17:18
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],]
题目解析:
(1)A[n,k] = A[n-1,k]+ ( A[n-1,k-1] + A[n] )。所以一般的想法应该是递归进行求解。
(2)另外注意边界条件:n == k,k == 1,n < k 或者 k < 0 的情况下
#include <iostream>#include <vector>using namespace std;vector<vector<int> > combine(int n, int k) {vector<vector<int>> combinationsk;if(n<k || k <= 0)return combinationsk;if(n == k){vector<int> temp;for(int i=0;i<k;i++)temp.push_back(i+1);combinationsk.push_back(temp);return combinationsk;}if(k == 1){for(int i=1;i<=n;i++){vector<int> temp;temp.push_back(i);combinationsk.push_back(temp);}return combinationsk;}combinationsk = combine(n-1, k);vector<vector<int>> combinationskMinusOne = combine(n-1, k-1);for(int i = 0;i<combinationskMinusOne.size();i++){vector<int> temp = combinationskMinusOne.at(i);temp.push_back(n);combinationsk.push_back(temp);}return combinationsk;}void printCombinations(vector<vector<int> > combinations){for(int i=0;i<combinations.size();i++){vector<int> temp = combinations.at(i);for(int j=0;j<temp.size();j++){cout << temp.at(j) << " ";}cout << endl;}}int main(void){vector<vector<int> > combinations = combine(4, 3);printCombinations(combinations);system("pause");return 0;}
0 0
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- Combinations
- combinations
- Combinations
- Combinations
- Combinations
- Combinations
- 分布式web服务架构(二)
- 分支限界与回溯法对比
- HDU5007-Post Robot
- 响应式Web设计
- Linux高级字符设备之Poll操作
- Combinations
- VC6.0 error LNK2001: unresolved external symbol _main解决办法
- 汉诺塔-递归算法
- 计算机经典书籍系列1-C陷阱与缺陷1
- 用最简单的方法实现微信星座运势查询
- 手持置于大腿上方模式(Lap Hand)
- uva11100
- 关于VS2012警告未能加载包“Visual C++ package”的问题
- 《软件工程导论》课后习题答案