Pagini recente » Cod sursa (job #2088446) | Cod sursa (job #2080472) | Cod sursa (job #2080462) | Cod sursa (job #1758935) | Cod sursa (job #2077416)
#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) {
int submultime = x;
int poz = 1;
while (x) {
if (x & 1)
subMultimi[submultime].push_back(poz);
x = x>>1;
poz++;
}
}
int main() {
int n;
fin>>n;
vector<int> zeroVector;
subMultimi.push_back(zeroVector);
int maxNumber = (1<<n);
for (int i = 1; i < maxNumber; i++) {
vector<int> temp;
subMultimi.push_back(temp);
convertToBaseTwo(i);
}
sort(subMultimi.begin(), subMultimi.begin() + maxNumber, 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;
}