77. Combinations

来源:互联网 发布:五轴编程招聘 编辑:程序博客网 时间:2024/05/16 15:42

Problem:

Given two integers n and k, return all possible combinations of k 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],]

Solution:

#include<algorithm>
#include<stdio.h>
#include<iostream>
#include<string>
#include<stdlib.h>
#include<vector>
#include<stack>


using namespace std;


class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<vector<int>> result;
int i = 0;
vector<int> p(k, 0);
while (i >= 0) {
p[i]++;
if (p[i] > n) --i;
else if (i == k - 1) result.push_back(p);
else {
++i;
p[i] = p[i - 1];
}
}
return result;
}
};
int main()
{
Solution s;
for (auto i: s.combine(8, 5))
{
for (auto j : i)
{
cout << j;
}
cout << endl;
}

getchar();
return 0;
}

原创粉丝点击