Cod sursa(job #1842599)

Utilizator SMerlinJacobsen Iandru SMerlin Data 7 ianuarie 2017 12:02:20
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>
#pragma warning(disable:4996)
using namespace std;

const int MAX = 20;
int n, v[MAX];

int valid(int k);
int solutie(int k);
void afisare(int k);
void BK(int k);

int main() {
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);
	scanf("%d", &n);
	BK(1);
	return 0;
}

void BK(int k) {
	int i;
	for (i = 1; i <= n; i++)
	{
		v[k] = i;
		if (valid(k))
		{
			if (solutie(k))
				afisare(k);
			else
				BK(k + 1);
		}
	}
}

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

int solutie(int k) {
	if (k == n)
		return 1;
	return 0;
}

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