Pagini recente » Cod sursa (job #2177845) | Cod sursa (job #293250) | Cod sursa (job #262480) | Cod sursa (job #124148) | Cod sursa (job #2470406)
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
int generate_comb(int count, int k, vector<int> &cur_comb, vector<int> &options, vector<vector <int>> &comb) {
if (count == k + 1) {
comb.push_back(cur_comb);
return 1;
}
if ((int)options.size() < k - count)
return 1;
for (int i = 0; i < (int)options.size(); i++) {
vector<int> new_comb= cur_comb;
new_comb.push_back(options[i]);
vector<int> new_options(options.begin() + i + 1, options.end());
generate_comb(count + 1, k, new_comb, new_options, comb);
}
return 1;
}
int main() {
#ifdef INFOARENA
ifstream cin("combinari.in");
ofstream cout("combinari.out");
#endif
int n, k; cin >> n >> k;
vector<vector <int>> comb;
vector<int> cur_comb;
vector<int> options(n);
for (int i = 1; i <= n; i++)
options[i - 1] = i;
generate_comb(1, k, cur_comb, options, comb);
for (int i = 0; i < (int)comb.size(); i++) {
for (int j = 0; j < k; j++)
cout << comb[i][j] << " ";
cout << "\n";
}
return 0;
}