Cod sursa(job #612419)

Utilizator s8ko14romario s8ko14 Data 7 septembrie 2011 15:52:55
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#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])
					{
						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);
}