Cod sursa(job #3362869)

Utilizator horia.boeriuBoeriu Horia Andrei horia.boeriu Data 12 august 2026 20:08:23
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>

const int MAXN = 8;
const int NIL = 0;
int nextp[MAXN + 1], prevp[MAXN + 1], v[MAXN];
int n;

FILE *fin, *fout;
void bkt(int poz) {
    int i;
    if (poz == n) {
        for (i = 0; i < n; i++) {
            fprintf(fout, "%d ", v[i]);
        }
        fprintf(fout, "\n");
    } else {
        i = nextp[0];
        while (i != NIL) {
            v[poz] = i;
            prevp[nextp[i]] = prevp[i];
            nextp[prevp[i]] = nextp[i];
            bkt(poz + 1);
            prevp[nextp[i]] = nextp[prevp[i]] = i;
            i = nextp[i];
        }
    }
}
int main()
{
    int i;
    fin = fopen("permutari.in", "r");
    fscanf(fin, "%d", &n);
    fclose(fin);
    for (i = 1; i <= n; i++) {
        prevp[i] = i - 1;
        nextp[i] = i + 1;
    }
    nextp[0] = 1;
    nextp[n] = NIL;
    fout = fopen("permutari.out", "w");
    bkt(0);
    fclose(fout);
    return 0;
}