|
|
|
|
Strumenti |
15-01-2016, 12:20 | #1 |
Senior Member
Iscritto dal: Mar 2004
Città: RoMaNoVeNeTo
Messaggi: 756
|
[VBA] difficile grafi e permutazioni
Help... sono bloccatissimo.
Ho un array di questo tipo (semplificando molto...) 423 422 421 413 412 411 322 321 312 311 221 211 121 111 ogni prima cifra di ogni elemento indica il livello (es. 322 è un elemento di 3 livello). devo costruire Tutti i percorsi per arrivare a un elemento dell'array, partendo dal livello 1, facendo in modo che tutti i percorsi abbiamo solo un elemento per ogni livello inferiore. quindi per arrivare all'elemento 322 (terzo livello), i percorsi possibili sono 221 - 121 221 - 111 211 - 121 211 - 111 per arrivare all'elemento 411 (quarto livello) 322 - 221 - 121 322 - 221 - 111 322 - 211 - 121 322 - 211 - 111 321 - 221 - 121 321 - 221 - 111 321 - 211 - 121 321 - 211 - 111 312 - 221 - 121 312 - 221 - 111 312 - 211 - 121 312 - 211 - 111 311 - 221 - 121 311 - 221 - 111 311 - 211 - 121 311 - 211 - 111 Ho iniziato con le permutazioni con ripetizione, per creare tutte le possibili soluzioni e poi ripulire quelle con livelli ripetuti, ma siamo a godziliardi per il livello 9... quindi non ne esco.. e non ho studiato i grafi a scuola...
__________________
Acer m5500 (Q6600,4MB) Sapphire Ati 3850, Logitech Performance MX, Tastiera Logitech G15, Epson bx 310 FN, QNAP 419p+, WDTVLIVE, Harmony One |
18-01-2016, 09:09 | #2 |
Senior Member
Iscritto dal: Mar 2004
Città: RoMaNoVeNeTo
Messaggi: 756
|
nessuno??
__________________
Acer m5500 (Q6600,4MB) Sapphire Ati 3850, Logitech Performance MX, Tastiera Logitech G15, Epson bx 310 FN, QNAP 419p+, WDTVLIVE, Harmony One |
26-01-2016, 16:53 | #3 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Pazzia!
E' molto più semplice di quello che pensi. Prima di tutto ti conviene suddividere l'array iniziale in n array, uno per livello (non è indispensabile ma semplifica e rende più efficiente l'implementazione), e mettere questi array in un ulteriore array (puoi farlo creando un nuovo type). A questo punto implementi una funzione ricorsiva che crea il risultato prendendo di volta in volta un solo elemento da ogni gruppo... è più facile a farsi che a dirsi. |
29-01-2016, 17:00 | #4 |
Senior Member
Iscritto dal: Mar 2004
Città: RoMaNoVeNeTo
Messaggi: 756
|
effettivamente....
creando una serie di array uno per livello, e 9 cicli for annidati creo tutti i percorsi. ma come si crea un array di array?
__________________
Acer m5500 (Q6600,4MB) Sapphire Ati 3850, Logitech Performance MX, Tastiera Logitech G15, Epson bx 310 FN, QNAP 419p+, WDTVLIVE, Harmony One |
29-01-2016, 20:53 | #5 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Come dicevo, puoi farlo creando un nuovo type, esempio:
Codice:
Private Type StringArray items() As String End Type Dim livelli() As StringArray ReDim livelli(9) ReDim livelli(0).items(99) livelli(0).items(0) = "aaa" |
10-02-2016, 14:58 | #6 |
Senior Member
Iscritto dal: Mar 2004
Città: RoMaNoVeNeTo
Messaggi: 756
|
mi hai aperto un mondo... funziona alla grandissima!!!
GRAZIE!
__________________
Acer m5500 (Q6600,4MB) Sapphire Ati 3850, Logitech Performance MX, Tastiera Logitech G15, Epson bx 310 FN, QNAP 419p+, WDTVLIVE, Harmony One |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:05.