|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 18
|
[JAVA] Problema funzione combinazioni
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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2788
|
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). |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 18
|
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... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2788
|
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:24.



















