|
|
|
![]() |
|
Strumenti |
![]() |
#21 | |
Senior Member
Iscritto dal: May 2001
Messaggi: 12856
|
Quote:
ordinato -> adinoort tanordio -> adinoort Quindi le due parole sono anagrammi. In realtà se ci pensi bene quello che proponi tu non è nient'altro che un ordinamento Integer Sort O(n) applicato ai caratteri (che sono sempre interi dal nostro punto di vista) ![]() Notare anche che per piccoli numeri un ordinamento O(n^2) si comporta meglio di altri e che comunque su piccoli set di dati la differenza è trascurabile. Ogni algoritmo va applicato in base anche al contesto e non solo perché sulla carta è più efficiente... Ultima modifica di WarDuck : 13-11-2011 alle 11:50. |
|
![]() |
![]() |
![]() |
#22 | |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
Quote:
|
|
![]() |
![]() |
![]() |
#23 |
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Ti ho scritto lo pseudo-codice per non darti la pappa pronta e imparare a farlo da solo.Non capisco come del codice in c++ possa essere più chiaro dello pseudo-codice.Se non hai capito qualcosa in particolare chiedilo.
Comunque... Abbiamo n posizione nell'array. Parto dal fondo, cioè da n, e scelgo in modo casuale quale lettera mettere in n. Ogni lettera della parola ha uguale probabilità di occupare quella posizione. Dopo devo scegliere una lettera, fra quelle che sono rimaste, da mettere nella posizione n-1. Fatto questo devo scegliere una lettera, fra quelle rimaste, da mettere nella posizione n-2. Si prosegue cosi fino all'esaurimento delle lettere. k è la posizione corrente in cui devo mettere la lettera e, l'insieme {1, 2, ..., k} di indici, le posizioni delle lettere possibili da scegliere. u = rand(); i = Int(u*k) + 1; è un modo per generare una variabile aleatoria con distribuzione discreta uniforme su k elementi.
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:22.