Pagini recente » Cod sursa (job #2193414) | Cod sursa (job #1257745) | Cod sursa (job #2185856) | Cod sursa (job #68632) | Cod sursa (job #2222645)
#include <bits/stdc++.h>
using namespace std;
int st[15],fr[15],n,i,k=0;
void init()
{
st[++k]=0;
fr[0]++;
}
bool succesor()
{
if(st[k]==n)return 0;
fr[st[k]]--;
st[k]++;
fr[st[k]]++;
return 1;
}
bool valid()
{
if(fr[st[k]]>=2)return 0;
return 1;
}
void print()
{
for(i=1;i<=n;i++)printf("%d ",st[i]);
printf("\n");
}
void backt()
{
k=0;
init();
while(k)
{
int es,ev=0;
do
{
es=succesor();
if(es)ev=valid();
}while(es&&!ev);
if(es)
{
if(k==n)print();
else
init();
}
else
{
fr[st[k]]--;
--k;
}
}
}
int main()
{
freopen("permutari.in","r",stdin);
freopen("permutari.out","w",stdout);
scanf("%d",&n);
backt();
return 0;
}