PDA

Visualizza la versione completa : [C++] Stampare tutte le combinazioni di numeri


XWolverineX
17-01-2007, 18:35
Supponiamo di avere un vettore di x elementi.
Se volessi stampare tutte le sue combinazioni possibili, come potrei fare?
Esempio, un vettore di 3 elementi, in cui vi scritto
1 2 3

Dovrebbe fare
1 2 3
2 1 3
2 3 1
3 2 1
3 1 2

Come potrei fare?
Mi basta anche solo la "teoria", poi lo implemento da solo.

XWolverineX
17-01-2007, 21:47
nisba?

XWolverineX
17-01-2007, 22:39
nessuno ha un'ideuzza?
io non so proprio da dove partire :dh:

Xaratroom
17-01-2007, 22:49
Le combinazioni non tengono conto dell'ordine (abc == bca) (le disposizioni si)...
Scusa l'img da vomito:

XWolverineX
18-01-2007, 18:53
Dovrei quindi fare un albero binario? non mi molto chiara la situazione

Xaratroom
18-01-2007, 19:27
Non necessariamente un albero binario...
L'albero pu essere binario solo con n = 3
eccoti un altro esempio con n = 2 = {a, b}

XWolverineX
18-01-2007, 19:29
Non riesco a capire i tuoi esempi!
Cosa vuoi dire?

Xaratroom
18-01-2007, 19:36
I passi ecco cosa devi fare:

Inizi con n nodi principali
Agli n nodi principali associ n - 1 nodi (non includendo il nodo principale)
Il procedimento si ripete associando agli n-1 nodi n-2 nodi
...

Ad esempio:
n = 4

crei 4 nodi principali
1 2 3 4

consideri il nodo 1
associ 2 3 4
ottieni cos

1-2
1-3
1-4

consideri il nodo 2 (1 - 2)
associ 3 4
ottieni

1-2-3
1-2-4
1-3-2
1-3-4
1-4-2
1-4-3

ripeti il procedimento per gli altri nodi

XWolverineX
18-01-2007, 19:39
Ora inizia a chiarirsi il tutto.
E quale struttura mi consigli di usare? qualcosa della STL?

Xaratroom
18-01-2007, 20:02
E quale struttura mi consigli di usare? qualcosa della STL?
Bhe l'stl dovrebbe andare visto che si lavora dinamicamente.
Ma sinceramente non mi viene niente, di speciale, in mente :(
Si potrebbe fare un giochino con puntatori, utilizzando quindi una grande lista...
Il problema che quello che ho in mente troppo oneroso :(

Loading