Oppure

Loading
19/12/07 21:24
spud---
Ho un problema con un algoritmo che genera le possibili combinazioni di elementi contenuti in un vettore.

esempio se io ho "abcdef" e l'utente scegliere di generare parole di 4 caratteri deve fare:
aaaa
aaab
aaac
aaad
aaae
aaaf
aaba
aabb
aabc
...
eccetera...

Se la lunghezza della parola da generare è fissa basta fare un tot di cicli nidificati ed è fatta, ma se la lunghezza delle parole da generare è decisa dall'utente, per esempio sceglie di generare parole comprese tra i 4 e i 10?
aaa
20/12/07 16:27
spud---
Nessuno sa aiutarmi?
aaa
27/12/07 12:01
lorelapo
allora prima un pò di infarinatura :
a. il numero totale di combinazioni in questo caso è dato da n^m dove n è il numero delle possibili lettere (abcdefgh...) e m il numero di caratteri da cui è formata la stringa.
b. la ricorsione è ovunque

ora posso provare con uno pseudocodice molto scarno fatto con una funzioncina ricorsiva facile facile:
#due stringhe una con tutti i caratteri
#e l'altra con la combinazione
STRING c(n)={...},comb(m)=0;#inizializzo le lettere come ti pare e comb a zero
#La funzione che li combina
FUNZIONE COMBINA(int I)
INIZIO
int J;
IF(i<m)
INIZIO
FOR(J=0;J<n;J+=1)
INIZIO
comb(I)=c(J);
COMBINA(I+1);
FINE
FINE
ELSE
INIZIO
PUTS(comb);
FINE
RETURN 0;
FINE

FUNZIONE PRINCIPALE(ARGOMENTI)
INIZIO
COMBINA(0);
RETURN 0;
FINE

allora apparte la lingua che sembra un europanto parlato da un babbuino o un simile di jar jar, i concetti sono quelli, una funzione che esplora tutte le combinazioni ricorsivamente, molto semplice da implementare.
Ultima modifica effettuata da lorelapo 27/12/07 12:01
aaa