Cod sursa(job #655972)

Utilizator dany123Florea Daniel dany123 Data 3 ianuarie 2012 17:54:52
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
#include<fstream>
using namespace std;
int n, st[10], k=1;
ofstream fout("permutari.out");

void scrie()
{
	for (int i=1;i<=n;i++)
		fout<<st[i]<<' ';
	fout<<'\n';
}

inline int verificare (int k)
{
	for (int i=1;i<k;++i) 
		if (st[i]==st[k]) return 0;
	return 1;
}
void backtracking ()
{
	while (k>=1)
	{
		if (k==n+1)
		{
			scrie();
			--k;
		}
		else if (k<=n) 
		{
			if (st[k]<n) 
			{
				int ok=0; //daca fac --k
				
				++st[k];
				while (!verificare(k))
					if (st[k]<n) ++st[k];
					else {st[k]=0; --k; ok=1;}
				if (!ok) ++k;
			}
			else {st[k]=0; --k;}
		}
	}
}	
	
int main ()
{
	ifstream fin ("permutari.in");
	fin>>n;
	backtracking();
	fin.close(); fout.close();
	return 0;
}