Pagini recente » Cod sursa (job #3198294) | Cod sursa (job #377280) | Cod sursa (job #520524) | Cod sursa (job #3204617) | Cod sursa (job #1199385)
#include <stdio.h>
#define MAXN 8
FILE *out;
int n, prim, prev[ MAXN ], next[ MAXN ], stiva[ MAXN ], dr = 0;
void bkt( int nr ){
int i;
if ( nr == 0 ){
for( i = 0; i < dr; i++ ) fprintf ( out, "%d ", stiva[ i ] );
fprintf ( out, "\n" );
}
else{
int aux = prim;
for ( i = prim; i < n; i = next[ i ] ){
if ( i == prim ) prim = next[ i ];
stiva[ dr ] = i + 1;
dr++;
prev[ next[ i ] ] = prev[ i ];
if ( prev[ i ] != -1 ) next[ prev[ i ] ] = next[ i ];
bkt ( nr - 1 );
prim = aux;
dr--;
prev[ next[ i ] ] = i;
if ( prev[ i ] != -1 ) next[ prev[ i ] ] = i;
}
}
return 0;
}
int main()
{
FILE *in = fopen ( "permutari.in", "r" );
fscanf ( in, "%d", &n );
fclose( in );
out = fopen ( "permutari.out", "w" );
int i;
for ( i = 0; i < n; i++ ){
prev[ i ] = i - 1;
next[ i ] = i + 1;
}
prim = 0;
bkt ( n );
fclose ( out );
return 0;
}