Pagini recente » Cod sursa (job #1558631) | Cod sursa (job #2095497) | Cod sursa (job #983749) | Cod sursa (job #612645) | Cod sursa (job #2077417)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("submultimi.in");
ofstream fout("submultimi.out");
vector<vector<int>> subMultimi;
bool myfunction (vector<int> v, vector<int> w) {
vector<int>::iterator itV = v.begin();
vector<int>::iterator itW = w.begin();
while (itV != v.end() && itW != w.end()) {
if ((*itV)<(*itW))
return true;
else if ((*itV)>(*itW))
return false;
itV++;
itW++;
}
if (itV == v.end())
return true;
else
return false;
}
void convertToBaseTwo(int x) {
vector<int> temp;
int poz = 1;
while (x) {
if (x & 1)
temp.push_back(poz);
x = x>>1;
poz++;
}
subMultimi.push_back(temp);
}
int main() {
int n;
fin>>n;
vector<int> zeroVector;
subMultimi.push_back(zeroVector);
int maxNumber = (1<<n);
for (int i = 1; i < maxNumber; i++) {
convertToBaseTwo(i);
}
sort(subMultimi.begin() + 1, subMultimi.end(), myfunction);
for (int i = 1; i < maxNumber; i++) {
vector<int>::iterator it;
for (it = subMultimi[i].begin(); it != subMultimi[i].end(); it++)
fout<<(*it)<<" ";
fout<<"\n";
}
fin.close();
fout.close();
return 0;
}