# Make all combinations of size k

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.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.