gaspare.pappalardo1
Ominide
1 min. di lettura
Vota 4 / 5

Concetti Chiave

  • Le disposizioni semplici consentono di esplorare uno spazio di soluzioni di k elementi da un insieme di n elementi distinti, con una formula di (n!)/(n-k)!.
  • L'esempio di codice C per disposizioni semplici utilizza una ricorsione per iterare attraverso le possibili soluzioni, aggiornando un array di marcatura per tenere traccia degli elementi utilizzati.
  • Le disposizioni ripetute, diversamente dalle semplici, considerano la possibilità di ripetere gli elementi, con un totale di n^k combinazioni possibili.
  • L'implementazione in C per le disposizioni ripetute segue una logica simile, ma senza la necessità di un array di marcatura, data la possibilità di ripetere gli elementi.
  • Entrambi i metodi di disposizione utilizzano la ricorsione per generare e stampare ogni possibile combinazione di elementi.

Esplorazione dello spazio - Disposizioni semplici e ripetute in C

  • Disposizioni semplici: le disposizioni semplici permettono di esplorare lo spazio delle soluzioni di k elementi dato un insieme di n elementi distinti (con 0 Vi sono esattamente (n!)/(n-k)! disposizioni semplici.

    Esempio:

    int disp_s(int pos, int *val, int *sol, int *mark, int n, int k, int count){
    int i;
    if(pos>=k){
    for(i = 0; i printf(“%d ”, sol);
    printf(“\n”);
    return count+1;
    }

    for(i = 0; i if(mark == 0){
    mark = 1;
    sol[pos] = val;
    count = disp_s(pos+1, val, sol, mark, n, k, count);
    mark = 0;
    }
    }
    return count;
    }

  • Disposizioni ripetute: permettono di esplorare lo spazio delle soluzioni di k elementi dato un insieme di n elementi distinti (con 0 Vi sono esattamente n^k disposizioni ripetute.

    Esempio:

    int disp_r(int pos, int *val, int *sol, int n, int k, int count){
    int i;
    if(pos>=k){
    for(i = 0; i printf(“%d ”, sol);
    printf(“\n”);
    return count+1;
    }

    for(i = 0; i sol[pos] = val;
    count = disp_r(pos+1, val, sol, n, k, count);
    }
    return count;
    }

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community