Cod sursa(job #197595)

Utilizator claudiu_sincaiSonel Claudiu-Cristian claudiu_sincai Data 5 iulie 2008 11:34:45
Problema Grigo Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 0.84 kb
#include <iostream.h>
#include <conio.h>

int n,k,ev,as,s[100],a,b;

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

int succesor ()
{
	if (s[k]<n)
	{
		s[k]=s[k]+1;

		return 1;
	}

	else return 0;
}

int valid (int a, int b)
{
	for (int i=1; i<k; i++)

		if (s[k]==s[i] || a!=1 || b<a || s[b]<s[a]) return 0;

	return 1;
}

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

void tipar ()
{
	for (int i=1; i<=n; i++)

		cout<<s[i]<<" ";

	cout<<endl;
}

void bt (int a, int b)
{
	k=1;

	init();

	while (k>0)
	{
		as=1; ev=0;

		while (as && !ev)
		{
			as=succesor();

			if (as) ev=valid(a,b);
		}

		if (as)

			if (solutie()) tipar();

			else {k++; init();}
		else k--;
	}
}

int main ()
{
	clrscr();

	cout<<"n="; cin>>n;

	cout<<"a="; cin>>a;

	cout<<"b="; cin>>b;

	bt(a,b);

	getch();

	return 0.;
}