Cod sursa(job #1569147)

Utilizator raikadoCri Lu raikado Data 14 ianuarie 2016 23:56:23
Problema Combinari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>

void printVector(int *x, int size, FILE* out)
{
	int i;
	for (i = 0; i < size; ++i)
	{
		fprintf(out, "%d ", x[i]);
	}
	fprintf(out, "\n");
}

void nck_aux(char n, int k, int start, FILE* out, int index, int* x)
{
	int i = start;
	if(index == k-1)
	{
		while(i <= n)
		{
			x[index] = i;
			printVector(x, k, out);
			++i;
		}
		return;
	} else
	{
		while (i <= n-k+1 + index)
		{
			x[index] = i;
			nck_aux(n, k, i+1, out, index+1, x);
			++i;
		}
	}
}

void nck(int n, int k, FILE* out)
{
	int* x = malloc(k*sizeof(int));
	nck_aux(n, k, 1, out, 0, x);
	free(x);

}

int main()
{
	FILE *in = fopen("combinari.in", "rt");
	if(!in) return 1;
	FILE *out = fopen("combinari.out", "wt");

	int n,k;
	fscanf(in, "%d%d", &n, &k);
	nck(n, k, out);

	fclose(in);
	fclose(out);
	return 0;
}