Cod sursa(job #940188)

Utilizator robert_stefanRobert Stefan robert_stefan Data 15 aprilie 2013 19:45:15
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>

using namespace std;

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

int n,st[9],k,as,ev;

void succesor(int k)
{
	if(st[k]<n)
	{
		st[k]++;
		as=1;
	}
	else as=0;
}

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

int sol(int k)
{
	return n==k;
}

int main()
{
	fin>>n;
	k=1;
	int i;
	while(k)
	{
		do{
			succesor(k);
			if(as)
				ev=valid(k);
		}while(!ev&&as);
		if(as)
		{
			if(sol(k))
			{
				for(i=1;i<=n;i++)
					fout<<st[i]<<' ';
				fout<<'\n';
			}
			else
			{
				k++;
				st[k]=0;
			}
		}
		else
			k--;
	}
	return 0;
}