You are on page 1of 3

#include <iostream>

using namespace std;

int n, st[10],k;

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

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

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

if (st[k]==st[i])
return 0;
}
return 1;
}

int solutie()
{
if(k==n) return 1;
return 0;
}

void tipar()
{
for (int i=1;i<=k;i++) cout<<st[i]<<" ";
cout<<endl;
}

void back()
{
k=1;
int as, ev;
init();
while(k>0)
{

do
{
as=succesor();
if(as==1) ev=valid();
} while (as==1 && ev==0);
if(as==1)
if(solutie()) tipar();
else
{
k++;
init();
}
else k--;
}
}

int main()
{

cin>>n;
for(int i=0;i<n;i++) st[i]=i;
back();
}

You might also like