Cod sursa(job #780891)

Utilizator f.v.antonFlavius Anton f.v.anton Data 22 august 2012 19:33:59
Problema Generare de permutari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int isOK(int *p, int k)
{
	int i;
	for (i = 0; i < k; i++)
		if (p[i] == p[k])
			return 0;
	return 1;
}

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

	fprintf(g, "\n");
}

void back(int k, int n, int *p, FILE *g)
{
	int i;
	for (i = 1; i <= n; i++) {
		p[k] = i;

		if (isOK(p, k)) {
			if (k == n - 1)
				print(p, n, g);
			else
				back(k+1, n, p, g);
		}
	}
}

int main (void)
{
	FILE *f, *g;
	int n, p[10];
	
	f = fopen("permutari.in", "rt");
	fscanf(f, "%d", &n);
	fclose(f);

	g = fopen("permutari.out", "wt");

	memset(p, 0, sizeof(p));
	back(0, n, p, g);
	
	fclose(g);
	return 0;
}