Cod sursa(job #518614)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 2 ianuarie 2011 11:59:07
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
// Metoda Backtracking

#include<fstream>
using namespace std;

int a[30],n,k;
ofstream fout("permutari.out");
int Valid()
{
	int i;
	for(i=1;i<k;i++)
		if(a[i]==a[k]) return 0;
	return 1;
}
void ScrieSol()
{
	int i;
	for(i=1;i<=n;i++)
		fout<<a[i]<<' ';
	fout<<"\n";
}
void GenPerm()
{
	int cand;
	a[1]=0;
	k=1;
	while(k>0)
	{
		cand=0;
		while(!cand && a[k]<n)
		{
			a[k]++;
			cand=Valid();
		}
		if(!cand) k--;
			else if(k==n) ScrieSol();
					else a[++k]=0;
	}
}
int main()
{
	ifstream fin("permutari.in");
	fin>>n;
	fin.close();
	GenPerm();
	fout.close();
	return 0;
}