Cod sursa(job #478427)

Utilizator a.stanciuStanciu Adrian a.stanciu Data 18 august 2010 16:44:06
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#include <stdlib.h>

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

int valid(int *v, int k)
{
	int i;

	for (i = 0; i < k; i++)
		if (v[i] == v[k]) return 0;

	return 1;
}

void back(int *v, int n, int k, FILE *g)
{
	int i;

	if (k == n)
	{
		print(v, n, g);
		return;
	}

	for (i = 1; i <= n ; i++)
	{
		v[k] = i;
		if (valid(v, k)) back(v, n, k + 1, g);
	}
}

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

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

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

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

	back(v, n, 0, g);
	
	fclose(f);
	fclose(g);
	
	return 0;
}