PDA

View Full Version : [JAVA] Problema funzione combinazioni


Colla87
26-11-2010, 14:14
Mi è sorto un altro problema. Mi servirebbe una funzione che prende in ingresso un array di dimensione variabile, questo array è fatto da int.

Io voglio che la funzione mi restituisca tutte le combinazioni di interi.

Esempio: L'array A è lungo 3 e contiene i seguenti valori,

A[0]=1
A[1]=2
A[2]=1

In uscita voglio ottenere:

121
120
111
110
101
100
021
020
011
010
001
000

Come posso fare? L'array iniziale può avere lunghezza variabile.

wingman87
26-11-2010, 14:33
Dall'esempio che hai fatto mi pare di capire che parli di combinazioni con ripetizione di n elementi presi k alla volta con n pari alla lunghezza dell'array e con k che va da 0 a n. Inoltre consideri 0 elemento nullo.
E' corretto?
Hai tenuto in considerazione il fatto che bastano pochi elementi per ottenere un numero di combinazioni elevatissimo?

Ad ogni modo per risolvere il problema puoi prima di tutto calcolare il set di elementi dell'array iniziale (nel tuo esempio {1,2}). Fatto questo per ogni cardinalità generi tutti i possibili insiemi con ripetizione con gli elementi del set che hai calcolato (è un po' come contare solo che le cifre che hai a disposizione, invece di essere 0..9, sono quelle del set).

Colla87
26-11-2010, 14:45
Esatto, è come contare, solo che ogni "casella" di questo ipotetico timer ha una base sua e considero lo 0 come elemento nullo.

Resta il fatto che non riesco a capire come fare...

wingman87
26-11-2010, 19:29
Come fare cosa? Contare? Puoi farlo in vari modi, in generale l'incremento può essere fatto in questo modo:
dato un vettore con n celle
partendo da i=0
-incremento la i-esima cella
-se sforo la azzero e passo alla successiva
-se non sforo ho finito