Cod sursa(job #766469)

Utilizator ioana26Ioana Andronescu ioana26 Data 11 iulie 2012 14:18:15
Problema Generare de permutari Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
/* 
Generarea permutarilor unei multimi folosind backtracking.
*/

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define MAXN	8

int n;
int solutie[MAXN];
bool gasit[MAXN];

void afiseaza_permutari () {
	int i;
	for (i = 1; i <= n; i++)
		printf("%d ", solutie[i]);
	printf("\n");
}

void genereaza_permutari (int p) {
	if (p == n + 1) 
		afiseaza_permutari();
	else {
		int i;
		for (i = 1; i <= n; i++) {
			if (!gasit[i]) {
				gasit[i] = 1;
				solutie[p] = i;
				genereaza_permutari(p + 1);
				gasit[i] = 0;
			}
		}
	}
}

int main () {
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);

	scanf("%d", &n);
	genereaza_permutari(1);

	return 0;
}