Salve a tutti, ho trovato un algoritmo che mi visualizza tutte le combinazioni semplici (la cui somma è data dal coefficiente binomiale) dati N numeri, in classi di K (con K< N) che posto perchè spero potrà essere utile anche a qualcun'altro. Il mio problema è che vorrei che visualizzasse le combinazioni in classe K di qualsiasi vettore di N numeri, mentre se inserisco 4 numeri a caso (diciamo 9-12-19-24) in classe 2 per esempio mi rende:
1 2
1 3
1 4
2 3
2 4
3 4
invece di
9 12
9 19
9 24
...
non riesco a dargli in input il vettore che vorrei, e non so se agire all'interno dell'algoritmo oppure nel momento in cui riscrive i riultati sulla textbox. Spero di essermi spiegato bene 
codice:
Public Function CombinazioniS(ByVal N&, ByVal K&, CombiS&()) As Boolean
'
' Ritorna, nella matrice CombiS(Cnk(N, K), K) con N >= K
' e K > 0, le combinazioni semplici di N oggetti della classe K:
'
N = Val(lblSelezionati.Caption)
K = Val(ElemScelti)
Dim R&, NR&, c&, P&
Dim progresso As Double
progresso = 0
'
On Error GoTo CombinazioniS_ERR
'
NR = Cnk(N, K) ' Numero delle righe.
ReDim CombiS(1 To NR, 1 To K)
'
' Scrivo la prima riga:
For c = 1 To K
CombiS(1, c) = c
Next c
'
' Righe rimanenti:
For R = 2 To NR
'
P = K
Do Until CombiS(R - 1, P) < N - K + P
P = P - 1
Loop
For c = 1 To P - 1
CombiS(R, c) = CombiS(R - 1, c)
Next c
'
CombiS(R, P) = CombiS(R - 1, P) + 1
'
For c = P + 1 To K
CombiS(R, c) = CombiS(R, c - 1) + 1
Next c
progresso = progresso + 1
ProgressBar.Value = progresso * 100 / NR
'
Next R
'
'
CombinazioniS_ERR:
CombinazioniS = (Err = 0)
If (Err <> 0) Then
Dim M$
M$ = "Err. N° " & Err.Number & " " & Err.Description & vbNewLine
MsgBox M$, vbCritical, " Function CombinazioniS"
End If
'
'
'
End Function
Successivamente scrivo le combinazioni su una textbox
codice:
If CombinazioniS(N, K, CombiS()) Then
txtCombi.Text = strTabella$(CombiS())
Else
txtCombi.Text = ""
End If
codice:
Private Function strTabella$(Tabella&(), Optional ByVal LimiteTB As Boolean = True)
'
' Ritorna una stringa con il contenuto della Tabella.
' Se NR e' molto grande, il tempo impiegato puo' essere
' notevole. Se LimiteTB = True la lunghezza della stringa
' di ritorno viene limitata alla capienza massima di un
' TextBox (circa 32000 caratteri).
'
Dim R&, NR&, c&, NC&, LenMax&, TxT$
'
NR = UBound(Tabella, 1)
NC = UBound(Tabella, 2)
For R = 1 To NR
For c = 1 To NC - 1
TxT$ = TxT$ & Right$(" " & Str$(Tabella(R, c)), 3) & ","
Next c
TxT$ = TxT$ & Right$(" " & Str$(Tabella(R, NC)), 3) & vbNewLine
'
DoEvents
Next R
'
strTabella$ = TxT$
'
'
End Function