Cod sursa(job #1425094)

Utilizator GilgodRobert B Gilgod Data 26 aprilie 2015 17:38:26
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>

#define NMAX 8

using namespace std;

const char IN[] = "permutari.in", OUT[] = "permutari.out";

int N;
int perm[NMAX + 1];

bool check(int k) {
	for (int i = 1; i < k; i++) if (perm[i] == perm[k]) return false;
	return true;
}

inline void printSolution() {
	for (int i = 1; i <= N; ++i) printf("%d ", perm[i]);
	printf("\n");
}

void permutari(int k) {
	if (k == N + 1) { printSolution(); return; }
	for (int i = 1; i <= N; i++) {
		perm[k] = i;
		if (!check(k)) continue;
		permutari(k + 1);
	}
}

int main() {
	freopen(IN, "r", stdin);
	scanf("%d", &N);
	FILE *f = freopen(OUT, "w", stdout);
	if (!f) return 0;
	permutari(1);
	fclose(stdout);

	return 0;
}