[LeetCode] Combinations

题目描述:

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],
]

解题思路:

 1 class Solution {
 2 public:
 3     vector<vector<int>> combine(int n, int k) {
 4         vector<vector<int>> result;
 5         vector<int> elem;
 6         
 7         combine(n, k, 1, result, elem);
 8         return result;
 9     }
10 private:
11     void combine(int n, int k, int cur, vector<vector<int>> &result, vector<int> &elem) {
12         if (elem.size() == k) {
13             result.push_back(elem);
14             return;
15         }
16         
17         for (int i = cur; i <= n; ++i) {
18             elem.push_back(i);
19             combine(n, k, i + 1, result, elem);
20             elem.pop_back();
21         }
22     }
23 };

 

posted @ 2016-03-25 22:39  skycore  阅读(170)  评论(0编辑  收藏  举报