Cod sursa(job #515472)

Utilizator ioanabIoana Bica ioanab Data 21 decembrie 2010 16:48:49
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
using namespace std;

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

int st[20],viz[20],n,k;

void init()
{
	st[k]=0;
}

int succesor()
{
	if(st[k]<n)
	{
		st[k]++;
		return 1;
	}
	return 0;
}
int valid()
{
	if(viz[st[k]])
		return 0;
	else
	{
		viz[st[k]]=1;
		return 1;
	}
}

int solutie()
{
	return k==n;
}
void tipar()
{
	for(int i=1;i<=n;i++)
		out<<st[i]<<" ";
	out<<"\n";
}

void backt()
{
	int as,ev;
	k=1;
	init();
	while(k>0)
	{
		do
		{
			as=succesor();
			if(as)
				ev=valid();
		}while(as && !ev);
		if(as)
		{
			if(solutie())
			{
				tipar();
				viz[st[k]]=0;
			}
			else
			{
				k++;
				init();
			}
		}
		else
		{
			k--;
			viz[st[k]]=0;
		}
	}
}
		

int main()
{
	in>>n;
	backt();
	return 0;
}