Pagini recente » Cod sursa (job #180896) | Cod sursa (job #49731) | Cod sursa (job #292444) | Cod sursa (job #1355035) | Cod sursa (job #612418)
Cod sursa(job #612418)
#include<stdio.h>
int factorial(int n)
{
int i,f=1;
for(i=1;i<=n;i++)
f=f*i;
return f;
}
int main()
{
FILE *f=fopen("permutari.in","rt");
FILE *g=fopen("permutari.out","wt");
int a[100],b[100],c,n,i,j,p=1,k,ok,u;
fscanf(f,"%i",&n);
for(i=1;i<=n;i++)
a[i]=i;
i=1;
c=a[1];
while(3)
{
if(i==n+1)
{
ceva2:
ok=0;
i--;
for(k=i+1;k<=n;k++)
if( b[i]+1<=a[n] && i+1<=n && b[k]>b[i])//Vefic daca litera actuala poate fi crescuta si tot dupa litera actuala exista macar o litera mai mare;
{
ok=1;
b[i]++;
break;
}
if(ok==0)
goto ceva2;
}
else
b[i]=c;
ceva:
for(j=1;j<i;j++)
if(b[i]==b[j])
{
b[i]++;
goto ceva;
}
b[n+1]='\0';
i++;
if(i==n+1)
{
for(u=1;u<=n;u++)
fprintf(g,"%i",b[u]);
fprintf(g,"\n");
p++;
}
if(p>factorial(n))
break;
}
fclose(f);
fclose(g);
}