Pagini recente » Cod sursa (job #1343827) | Cod sursa (job #1162098) | Cod sursa (job #727184) | Cod sursa (job #1868414) | Cod sursa (job #345683)
Cod sursa(job #345683)
/*
* File: main.cpp
* Author: speedemon
*
* Created on September 3, 2009, 1:07 PM
*/
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
inline bool permutation ( int v[], int n )
{
int i=n-2;
while ( ( i >= 0 ) && ( v[i] > v[i+1] ) ) --i;
if( i< 0 ) return false;
int j=n-1;
while( v[i] > v[j] ) --j;
v[i]+=v[j]; v[j]=v[i]-v[j]; v[i]-=v[j];
int k=0;
for( j=i+1; j < (n+i+1)/2; ++j,++k )
{
v[j]+=v[n-k-1];
v[n-k-1]=v[j]-v[n-k-1];
v[j]-=v[n-k-1];
}
printf("\n");
for( i=0; i<n; ++i ) printf("%d ",v[i]);
return true;
}
int main(int argc, char** argv)
{int *v;
int n,i;
bool ok=true;
freopen("permutari.in","rt",stdin);
freopen("permutari.out","wt",stdout);
scanf("%d",&n);
v=(int*)calloc(n,sizeof(n));
for( i=0; i<n; ++i ) v[i]=i+1,printf("%d ",v[i]);
while( permutation( v,n ) );
free(v);
return EXIT_SUCCESS;
}