Pagini recente » Cod sursa (job #2457802) | Cod sursa (job #2158648) | Cod sursa (job #396783) | Cod sursa (job #2441269) | Cod sursa (job #1095938)
#include<cstdio>
#define filein "permutari.in"
#define fileout "permutari.out"
using namespace std;
int st[10];
bool used[8];
int n;
FILE *out;
void citire();
void bkt();
void init(int k);
bool succesor(int k);
bool valid(int k);
void tipar();
int main()
{
citire();
out=fopen(fileout,"w");
bkt();
fclose(out);
return 0;
}
void citire()
{
FILE *in;
in=fopen(filein,"r");
fscanf(in,"%d",&n);
fclose(in);
}
void bkt()
{
int k=1;
init(k);
while (k>0)
{
if (succesor(k))
{
if (valid(k))
{
if (k==n)
tipar();
else
init(++k);
}
}
else k--;
}
}
void init(int k)
{
st[k]=0;
}
bool succesor(int k)
{
if (st[k]<n)
{
st[k]++;
return true;
}
return false;
}
bool valid(int k)
{
int i;
for (i=1; i<=n; i++)
used[i]=0;
for (i=1; i<=k; i++)
{
if (used[st[i]]==1)
return false;
used[st[i]]=1;
}
return true;
}
void tipar()
{
int i;
for (i=1; i<=n; i++)
fprintf(out,"%d ",st[i]);
fprintf(out,"\n");
}