Pagini recente » Cod sursa (job #2227364) | Cod sursa (job #329636) | Cod sursa (job #2771639) | Cod sursa (job #1735943) | Cod sursa (job #1333931)
#include <stdio.h>
FILE *fin = fopen("combinari.in", "rt");
FILE *fout = fopen("combinari.out", "wt");
int n, k;
int comb[50000];
int nrc;
int main() {
fscanf(fin, "%d %d", &n, &k);
for (int S = 0; S < (1 << n); S++) {
// S reprezinta o submultime de n elemente prin biti
int nr = 0;
for (int i = 0; i < n; i++) {
if ((S & (1 << i)) != 0) {
nr++;
}
}
if (nr == k) {
// submultimea are k elemente, deci e o combinare de k
comb[nrc++] = S;
}
}
for (int i = nrc-1; i >= 0; i--) {
for (int j = n-1; j >=0; j--) {
if ((comb[i] & (1 << j)) != 0) {
fprintf(fout, "%d ", n - j);
}
}
fprintf(fout, "\n");
}
fclose(fin);
fclose(fout);
return 0;
}