Related Articles
Make all combinations of size k
• Difficulty Level : Medium
• Last Updated : 23 Aug, 2017

Given two numbers n and k and you have to find all possible combination of k numbers from 1…n.

Examples:

```Input : n = 4
k = 2
Output : 1 2
1 3
1 4
2 3
2 4
3 4

Input : n = 5
k = 3
Output : 1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

We have discussed one approach in below post.

Print all possible combinations of r elements in a given array of size n

In this, we use DFS based approach. We want all numbers from 1 to n. We first push all numbers from 1 to k in tmp_vector and as soon as k is equal to 0, we push all numbers from tmp_vector to ans_vector. After this we remove the last element from tmp_vector and make make all remaining combination.

 `// C++ program to print all combinations of size``// k of elements in set 1..n``#include ``using` `namespace` `std;`` ` `void` `makeCombiUtil(vector >& ans,``    ``vector<``int``>& tmp, ``int` `n, ``int` `left, ``int` `k)``{``    ``// Pushing this vector to a vector of vector``    ``if` `(k == 0) {``        ``ans.push_back(tmp);``        ``return``;``    ``}`` ` `    ``// i iterates from left to n. First time``    ``// left will be 1``    ``for` `(``int` `i = left; i <= n; ++i)``    ``{``        ``tmp.push_back(i);``        ``makeCombiUtil(ans, tmp, n, i + 1, k - 1);`` ` `        ``// Popping out last inserted element``        ``// from the vector``        ``tmp.pop_back();``    ``}``}`` ` `// Prints all combinations of size k of numbers``// from 1 to n.``vector > makeCombi(``int` `n, ``int` `k)``{``    ``vector > ans;``    ``vector<``int``> tmp;``    ``makeCombiUtil(ans, tmp, n, 1, k);``    ``return` `ans;``}`` ` `// Driver code``int` `main()``{``    ``// given number``    ``int` `n = 5;``    ``int` `k = 3;``    ``vector > ans = makeCombi(n, k);``    ``for` `(``int` `i = 0; i < ans.size(); i++) {``        ``for` `(``int` `j = 0; j < ans[i].size(); j++) {``            ``cout << ans.at(i).at(j) << ``" "``;``        ``}``        ``cout << endl;``    ``}``    ``return` `0;``}`

Output:

```1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
```

This article is contributed by Roshni Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.