Cod sursa(job #478390)

Utilizator a.stanciuStanciu Adrian a.stanciu Data 18 august 2010 12:14:24
Problema Combinari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <stdlib.h>

void print(FILE *g, int *v, int k)
{
	int i;
	for (i = 0; i < k; i++)
		fprintf(g, "%d ", v[i]);
	fprintf(g, "\n");
}

int valid(int *v, int k, int x)
{
	int i;
	for (i = 0; i < x; i++)
		if (v[i] >= v[x]) return 0;
	return 1;
}

void back(int *v, int n, int k, FILE *g, int x)
{
	int i;
	if (x == k) 
	{
		print(g, v, k);
		return;
	}
	for (i = 1; i <= n; i++)
	{
		v[x] = i;
		if (valid(v, k, x)) back(v, n, k, g, x + 1);
	}
}

int main()
{
	int n, k, *v;
	FILE *f, *g;

	f = fopen("combinari.in", "r");
	g = fopen("combinari.out", "w");

	fscanf(f, "%d", &n);
	fscanf(f, "%d", &k);

	v = (int *)malloc(sizeof(int) * k);

	back(v, n, k, g, 0);

	fclose(f);
	fclose(g);

	return 0;
}