Cod sursa(job #2138392)

Utilizator fylot3Bogdan Filote fylot3 Data 21 februarie 2018 16:53:29
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
# include <stdio.h>

int N, K;
int simboluri[18];

FILE *fin = fopen("combinari.in", "r");
FILE *fout = fopen("combinari.out", "w");

void printSolution(int solution[]) {
	for (int i = 0; i < K; i++)
		fprintf(fout, "%d ", solution[i]);
	fprintf(fout, "\n");
}

void combinari(bool used[], int solution[], int level) {

	if (level >= K) {
		printSolution(solution);
		return;
	}

	for (int i = 0; i < N; i++) {
		if (!used[i]) {
			used[i] = true;
			solution[level] = simboluri[i];

			if (solution[level] > solution[level - 1])
				combinari(used, solution, level + 1);

			used[i] = false;
		}
	}

	return;
}

int main(void) {

	fscanf(fin, "%d%d", &N, &K);
	fclose(fin);

	int solution[18];
	bool used[18];

	for (int i = 0; i < N; i++) {
		simboluri[i] = i + 1;
		solution[i] = 0;
		used[i] = false;
	}

	combinari(used, solution, 0);

	fclose(fout);
}