Pagini recente » Cod sursa (job #2060023) | Cod sursa (job #3303326) | Cod sursa (job #3305236) | Cod sursa (job #3303537) | Cod sursa (job #3303459)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct Submultimi {
int N;
vector<char> vizitat;
vector<char> submultime;
explicit Submultimi(char N) {
this->N = N;
vizitat.resize(N);
}
void generare(ostream &out) {
if(submultime.size() < N) {
int mn = -1;
if(submultime.size()) {
mn = submultime.back();
}
for(int i=mn+1; i<N; ++i) {
if(!vizitat[i]) {
submultime.push_back(i);
vizitat[i] = 1;
generare(out);
vizitat[i] = 0;
submultime.pop_back();
}
}
}
if(submultime.size()) {
for(auto a: submultime) {
out << (int)a + 1 << ' ';
}
out << '\n';
}
}
};
int main() {
ifstream fin("submultimi.in");
ofstream fout("submultimi.out");
int N;
fin >> N;
Submultimi generator(N);
generator.generare(fout);
return 0;
}