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; iprintf(“%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; iprintf(“%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;
}