Pagini recente » Cod sursa (job #2909197) | Cod sursa (job #3344041) | Cod sursa (job #871306) | Cod sursa (job #849059) | Cod sursa (job #2023716)
#include <stdio.h>
#include <vector>
#include <cmath>
using namespace std;
#define pb push_back
typedef vector < vector <int> > vector2d;
class SubsetsGenerator {
private :
static int getBitPos(int n){
int bitPos;
for (bitPos = 0; (1 << bitPos) < n; ++bitPos);
return bitPos;
}
public :
static vector2d getSubsets(int n){
vector2d subsets;
for (int bitMask = 1; bitMask < (1<<n); ++bitMask){
vector <int> newSubset;
for (int floatBit = 1; floatBit <= bitMask; floatBit <<= 1){
if (floatBit & bitMask){
newSubset.pb(getBitPos(floatBit) + 1);
}
}
subsets.pb(newSubset);
}
return subsets;
}
};
int main(){
FILE *in = fopen("submultimi.in", "r");
FILE *out = fopen("submultimi.out", "w");
int n;
fscanf(in, "%d", &n);
vector2d subsets = SubsetsGenerator::getSubsets(n);
for (auto& subset : subsets){
for (auto& i : subset){
fprintf(out, "%d ",i);
}
fprintf(out, "\n");
}
return 0;
}