Algoritmo per la generazione di combinazioni

di il
1 risposte

Algoritmo per la generazione di combinazioni

Buon giorno a tutti. Avrei bisogno di risolvere il seguente problema.

Dati di input: G (grado), N (numero di elementi di un vettore)
Output: tutte le possibili combinazioni degli elementi del vettore tali che la loro somma sia uguale a G.

Es: G=5, N=4

5 0 0 0
4 1 0 0
3 2 0 0
...
4 0 1 0
3 1 1 0
2 2 1 0
...
3 0 2 0
2 1 2 0
...
4 0 0 1
3 1 0 1
...
3 0 1 1
2 1 1 1
...
2 0 2 1
1 1 2 1
...
3 0 0 2
2 1 0 2
...
2 0 0 3
...

Anche l'ordine con cui vengono generati è importante e dovrebbe essere rispettato.
Ringrazio tutti coloro che mi sapranno fornire qualche indicazione o suggerimento.

1 Risposte

  • Re: Algoritmo per la generazione di combinazioni

    Ciao, anche se nn ho provato quello che sto per dirti.. potrebbe essere una traccia per cominciare a costruire il tuo algoritmo:
    Come prima cosa memorizzi n contatori.. ognuno per ogni colonna..
    n(1) = G
    n(2) ... n(n) = 0;

    L'algoritmo puoi farlo ricorsivo o iterativo (io ti consiglio ricorsivo.. forse riesci ad abbassare un po' la complessità computazionale).. cmq inizialmente procedi a decrementare n(1) e incrementare n(2) proprio come hai fatto nell'esempio riportato.. in pratica c'è sempre una colonna che decrementi e una che incrementi.. e procedi così finchè nn hai finito le colonne..

    Un passo successivo da fare dopo potrebbe anche essere quello di considerare immediatamente la sequenza di numeri opposta a quella che calcoli.. in modo da fare prima..

    Spero di esserti stato d'aiuto.. ciao ciao..!!
Devi accedere o registrarti per scrivere nel forum
1 risposte