Pagini recente » Cod sursa (job #2849527) | Cod sursa (job #788006) | Cod sursa (job #1822940) | Cod sursa (job #3181625) | Cod sursa (job #162100)
Cod sursa(job #162100)
// http://infoarena.ro/problema/permutari
#include <stdio.h>
int N;
char st[8]; // 1 <= N <= 8
void init( char k )
{
st[k] = 0;
}
char succesor( char k )
{
if( st[k] < N )
{
++st[k];
return 1;
}
return 0;
}
char valid( char k )
{
static char i;
for( i = 0; i < k; ++i )
if( st[i] == st[k] )
return 0;
return 1;
}
char solutie( char k )
{
if( k == N-1 )
return 1;
return 0;
}
void tiparire()
{
static char i;
printf("%d", st[0] );
for( i = 1; i < N; i++ )
printf( " %d", st[i] );
printf("\n");
}
int main()
{
freopen( "permutari.in", "r", stdin );
freopen( "permutari.out", "w", stdout );
scanf( "%d", &N );
char k = 0;
char as = 0, ev = 0;
init( k );
while( k >= 0 )
{
do
{
as = succesor( k );
if( as )
ev = valid( k );
} while( as && !ev );
if( as )
{
if( solutie( k ) )
tiparire();
else
{
init( ++k );
}
}
else
k--;
}
return 0;
}