Cod sursa(job #1098496)

Utilizator negrea.andreiAndrei Negrea negrea.andrei Data 4 februarie 2014 21:00:07
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;
#define N 20

ifstream f("permutari.in");
ofstream g("permutari.out");

bool isValid(short A[], short i, short n)
{
	short frecv[N];
	for(int j = 0; j <= n; j++)
	{
	  frecv[j] = 0;
	}
	for(int j = 1; j <= i; j++)
	{
		if (frecv[A[j]])
		{
			return false;
		}
		frecv[A[j]]++;
	}

	return true;
}
void print(short A[], short n)
{
	for(int i = 1; i <= n; i++)
	{
		g << A[i] << " ";
	}
	g << endl;
}
void perm(short A[], short i, short n)
{
	for(int j = 1; j <= n; j++)
	{
		A[i] = j;
		if (isValid(A, i, n))
		{
			if (i == n)
			{
				print(A, n);
			}
			else
			{
				perm(A, i + 1, n);
			}
		}
	}
}
int main()
{
	short A[N], n;
	f >> n;
	perm(A, 1, n);
}