|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2008
Messaggi: 1
|
Algoritmo disposizioni semplici e con ripetizione.
Salve a tutti, sono nuovo del forum e stò impazzendo da un bel pò di tempo per cercare di realizzare un algoritmo che visualizzi tutte le disposizioni semplici e con ripetizione, dato n(numero di oggetti) e k(classe), oltre a chiedere se lo si deve risolvere con le ripetizioni o meno.
Sapendo che il numero di disposizioni è dato da n*(n-1)*(n-2)*.....*(n-k+1), io devo realizzare un algoritmo che mi visualizzi tutti i raggruppamenti che si ottengono, magari utilizzando una matrice. Qualcuno di voi saprebbe aiutarmi? O in precedenza ha fatto qualcosa di simile? Possibilmente mi servirebbe in c++, ma comunque mi va bene in qualsiasi linguaggio di programmazione, anche in pseudocodifica. Ringrazio quanti mi aiuteranno e premetto che lo dovrei realizzare al più presto possibile. Grazie a tutti. P.S. dimenticavo di dire che l'algoritmo deve essere iterativo e non ricorsivo!!! Ultima modifica di gas89 : 27-02-2008 alle 15:42. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Propongo 2 algoritmi iterativi.
Per le disposizioni con ripetizione mi viene in mente un algoritmo molto banale. un solo ciclo (Piu' lineare di cosi' non so se lo trovi...) , conti da 0 a N^K e stampi ciascuno dei valori in base N. Per avere la rappresentazione della stringa in base N vedi la funzione ItoA non ANSI C ma largamente supportata. Ti sembra un trucco? Puo' darsi, ma questi shortcut mi piacciono parecchio. Per le disposizioni senza ripetizione in prima istanza proverei a fare la stessa cosa, ma non stamperei il numero ottenuto quando ottengo 2 simboli uguali... Per sapere se ci sono almeno 2 simboli sono uguali e' una funzione O(k log(k)) alla peggio, e se k e' piccolo come di solito e', allora k log(k) e' ridicolo. Ovviamente questo algoritmo non e' l'ottimo. E quindi mi sa che ci sono alternative migliori. Occhio che e' facile cadere in un brutto spaghetti code.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 27-02-2008 alle 17:00. Motivo: invertito n e k |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:04.



















