Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [VB.NET] combinazioni

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    5

    [VB.NET] combinazioni

    ciao, non riesco a creare un algoritmo che mi faccia trovare il numero di combinazioni possibili tra n elementi;
    per esempio un vettore di tre elementi con ogni elemento che può assumere valori da 1 a tre e con questo particolare pattern:

    1: (0,0,0);
    2: (0,0,1);
    3: (0,0,2);
    4: (0,0,3);


    5: (0,1,1);
    6: (0,1,2);
    7: (0,1,3);


    8: (0,2,2);
    9: (0,2,3);


    10: (0,3,3);


    cioè l'elemento di destra non può mai essere piu piccolo di quello alla sua sinistra ma al più uguale;
    con vb.net ho provato così:

    codice:
    Sub calcola()
            Dim a, b, c As Integer
            Dim count As Long
            For a = 0 To 0
                For b = a To 3
                    For c = b To 3
                        
                        count = count + 1
                        
                    Next
                    
                Next
            Next
            MsgBox (count)
       
    End Sub
    è la stampa è 10, corretto!


    ma come faccio se mi servono tipo combinazioni tra 20 elemetni?
    non posso fare 20 cicli for!


    mi date una mano? grazie


    ps: sono un neofita
    Ultima modifica di MItaly; 26-05-2014 a 21:55

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Scusa, ma che linguaggio devi usare?
    Vorrei inoltre fare notare che le specifiche che dai del tuo problema sono in contraddizione.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    5
    Come si legge uso VB.NET;
    Il primo elemento non deve variare in quanto nel mio modellodello rappresenta un nodo fisso
    Ultima modifica di raffing; 26-05-2014 a 19:09

  4. #4

    Moderazione

    Benvenuto sul forum!
    • Le discussioni relative a VB.NET non sono trattate qui, ma nell'apposita sottosezione;
    • il codice va specificato tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione;
    • il linguaggio di riferimento (e relativa versione) va sempre specificato (anche nel titolo, sotto forma di "tag").


    Questa volta correggo io e provvedo a spostare il thread; in futuro stai più attento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    5
    Thanks

  6. #6
    Comunque, venendo al tuo problema, puoi risolverlo facilmente usando una funzione ricorsiva.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    5
    Mi potresti dire come la imposto?
    Sto provando in più modi

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da raffing Visualizza il messaggio
    Mi potresti dire come la imposto?
    Sto provando in più modi
    Puoi impostarlo così:
    codice:
    def comb(n):
        return comb1(n-1, 0, 0)
    
    def comb1(n, place, prec):
        if n == place:
            return len(range(prec, n+1))
        combs = 0
        for i in range(prec, n+1):
            combs += comb1(n, place+1, i)
        return combs
    Questo è Python ma puoi benissimo considerarlo pseudocodice
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.