Pagini recente » Cod sursa (job #2270136) | Cod sursa (job #1949251) | Cod sursa (job #2180007) | Cod sursa (job #3309755) | Cod sursa (job #3303454)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct Combinari {
int N, K;
vector<char> vizitat;
vector<char> combinare;
explicit Combinari(char N, char K) {
this->N = N;
this->K = K;
vizitat.resize(N);
}
void generare(ostream &out) {
if(combinare.size() < K) {
int mn = -1;
if(combinare.size()) {
mn = combinare.back();
}
for(int i=mn+1; i<N; ++i) {
if(!vizitat[i]) {
combinare.push_back(i);
vizitat[i] = 1;
generare(out);
vizitat[i] = 0;
combinare.pop_back();
}
}
} else {
for(auto a: combinare) {
out << (int)a + 1 << ' ';
}
out << '\n';
}
}
};
int main() {
ifstream fin("combinari.in");
ofstream fout("combinari.out");
int N, K;
fin >> N >> K;
Combinari generator(N, K);
generator.generare(fout);
return 0;
}