Cod sursa(job #1680424)

Utilizator Marian25Stanciulica Marian Marian25 Data 8 aprilie 2016 19:04:34
Problema Generare de permutari Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void swap(int *x, int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}

void print(int* v, int len, FILE* output){

    int i;
    for(i = 0; i < len; i++){
        fprintf(output, "%d ", v[i]);
    }
    fprintf(output, "\n");
}

void perm(int* v, int start, int end, int len, FILE* output){
    int i;
    int j;
    if(start == end){
       print(v, len, output);
    }
    else{
        for(i = start; i <= end; i++){
            swap(v + start, v + i);
            perm(v, start+1, end, len, output);
            swap(v + start, v + i);
        }
    }
}

int main()
{
    FILE* input = fopen("permutari.in", "r");
    FILE * output = fopen("permutari.out", "w");
    int n;

    fscanf(input, "%d", &n);

    int i;
    int vec[n];
    for(i = 1; i <= n; i++){
        vec[i-1] = i;
    }

    perm(vec, 0, n-1, n, output);

    fclose(input);
    fclose(output);
    return 0;
}