Pagini recente » Cod sursa (job #2041764) | Cod sursa (job #1898384) | Cod sursa (job #2258986) | Cod sursa (job #2964783) | Cod sursa (job #366343)
Cod sursa(job #366343)
/*
* File: main.cpp
* Author: virtualdemon
*
* Created on November 21, 2009, 3:46 PM
*/
#include <stdio.h>
#include <cstdlib>
/*
*
*/
int main(int argc, char** argv)
{int n, i, k;
bool ok;
int *s;
bool *uz;
freopen( "permutari.in", "rt", stdin );
freopen( "permutari.out", "wt", stdout );
scanf("%d", &n );
s=(int*)calloc( n, sizeof(int) );
uz=(bool*)calloc( n, sizeof(bool) );
k=0;
do
{ok=false;
for( i=s[k]+1; i <= n; ++i )
if( false == uz[i-1] )
{
ok=uz[i-1]=true;
if( s[k] )
uz[s[k]-1]=false;
s[k]=i;
break;
}
if( false == ok )
{
uz[s[k]-1]=0;
s[k]=0;
--k;
continue;
}
if( k == n-1 )
{
for( i=0; i <= k; ++i )
printf("%d ", s[i] );
printf("\n");
}
else ++k;
}while( k >= 0 );
free(uz); free(s);
return 0;
}