Pagini recente » Cod sursa (job #879960) | Cod sursa (job #857884) | Cod sursa (job #1744884) | Cod sursa (job #1470157) | Cod sursa (job #2339534)
#include <stdio.h>
#include <stdlib.h>
void print_combination(int *v, int k, FILE* out) {
for (int i = 0 ; i < k ; ++i) {
fprintf(out, "%d ", v[i]);
}
fprintf(out, "\n");
}
void next_permutation(int n, int k, int *v, FILE* out) {
int i;
for (i = 0 ; i <= k - 1 ; ++i) {
while (v[k - 1 - i] != n - i) {
v[k - 1 - i]++;
print_combination(v, k, out);
}
}
}
int main() {
FILE *in, *out;
if (((in = fopen("combinari.in", "rt")) == NULL)) {
printf("Nu am putut deschide fisierul de input!");
return -1;
}
if (((out = fopen("combinari.out", "wt")) == NULL)) {
printf("Nu am putut deschide fisierul de output!");
return -2;
}
int n, k, *v;
fscanf(in, "%d %d", &n, &k);
v = malloc(n * sizeof(int));
if (v == NULL) {
printf("Nu am putut aloca memorie\n");
return -3;
}
for (int i = 0 ; i < n ; ++i) {
v[i] = i + 1;
}
print_combination(v, k, out);
next_permutation(n, k, v, out);
// Freeing the memory
free(v);
fclose(in);
fclose(out);
return 0;
}