Cod sursa(job #1010829)

Utilizator Teodor94Teodor Plop Teodor94 Data 15 octombrie 2013 19:34:02
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <cassert>

#define MAX_N 10

int sol[MAX_N];
bool marked[MAX_N];

void write( FILE *fout, int n ) {
    for ( int i = 0; i < n; ++i )
        fprintf( fout, "%d ", sol[i] );
    fprintf( fout, "\n" );
}

void bkt( FILE *fout, int pos, int n ) {
    if ( pos == n ) {
        write( fout, n );

        return;
    }

    for ( int i = 1; i <= n; ++i )
        if ( !marked[i] ) {
            marked[i] = true;
            sol[pos] = i;
            bkt( fout, pos + 1, n );
            marked[i] = false;
        }
}

int main() {
    FILE *fin, *fout;

    fin = fopen( "permutari.in", "r" );
    int n;
    assert( fscanf( fin, "%d", &n ) == 1 );
    fclose( fin );

    fout = fopen( "permutari.out", "w" );
    bkt( fout, 0, n );
}