PDA

Visualizza la versione completa : [C++] Combinazioni di vettori


SkOrPiOn`87
14-03-2004, 18:36
Ciao, io sto cercando di fare un semplice programma che dato un array poniamo di 5 caratteri, mi resistituisca tutte le sue possibili combinazioni.

Es:

abcd, abdc, adbc, adbc....

io avrei pensato di prendere il primo carattere tenerlo fermo, mentre l'ultimo tutte le volte si spostava sinistra, ma questo mi da solamente alcune delle combinazioni possibili...

Qualcuno sa darmi una dritta su come ottenere tutte le combinazioni?


Grazie :ciauz:

kNemo
14-03-2004, 18:46
Fai dei cicli for annidati per far scorrere le varie lettere...
salvandoti le combinazioni !!!!

SkOrPiOn`87
14-03-2004, 19:20
si ma questi cicli in base a cosa li devo fare, ci arà un procedimento logico per capire qaundo li avrò fatte tutte le combinazioni?

Poi per far si che non si ripetano le combinazioni dovreifarvarle tutte nelle variabili e tutte le volte scorrere l'array per vedere che non si ripeta... non penso sia il miglior modo per fare questo, sia per il tempo sia per l'ffidabilità in quanto non saprei se ho ottenuto tutte le combinazioni possibili...

andypower
14-03-2004, 19:21
Ho scritto velocemente questo cod:

#include <iostream.h>

const int N = 5;

void main () {
char c[N] = {'a', 'b', 'c', 'd', 'e'};
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
for (int z = 0; z < N; z++) {
for (int x = 0; x < N; x++) {
for (int y = 0; y < N; y++) {
cout << c[i] << c[j] << c[z] << c[x] << c[y] << endl;
}
}
}
}
}
}

Fa quello che dici, ho inizializzato i 5 caratteri dandogli a b c d e e se lo compili e lo esegui stampa tutte le combinazioni possibili bye! :metallica

kNemo
14-03-2004, 19:26
ma se io ho piu' di 5 lettere non c'e' un modo per creare for dinamici ???

o mi tocca usare
if (stringa == 6) {
for(...)
}

andypower
14-03-2004, 19:28
Capisco il problema, a questo punto si dovrebbe pensare ad un algoritmo pèiù efficente ma io ora devo scappare, se il tuo problema riguarda 5 caratteri quel codice va più che bene, se il numero dei caratteri è variabile bhè allora conviene pensare ad un'altra soluzione byez! :metallica

kNemo
14-03-2004, 19:35
con un qualcosa di ricorsivo ???

SkOrPiOn`87
14-03-2004, 19:39
si ci vorrebbe una funzion ricorsiva penso, però non riesco a capire la logica del programma, io protrei fare un programma pensato per 5 caratteri, ma s diventassero 4 o 6, mi servirebbe un codice che andasse bene per questi casi... ma purtroppo non riesco proprio a capire come fare :(


:ciauz:

Loading