begin process at 2012 02 16 10:01:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

A Nico1610 - Récursivité


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

A Nico1610 - Récursivité

dimanche 5 février 2006 à 23:48:45 | A Nico1610 - Récursivité

LIQUIDAMBAR

Membre Club

J'ai trouvé ce programme dans les codes sources et la procédure combinaisons m'est incompréhensible. Merci pour ton aide,
GDM

Private Sub cmdGO_Click()
Dim Valeur(0 To 2) As Integer
Dim i As Integer
Dim N As Long
Dim Fichsortie As Integer
Fichsortie = 1
Open "c:\m.doc" For Output As #1
    For i = 0 To 2
        If Not IsNumeric(txtSomme(i).Text) Then Exit Sub
        Valeur(i) = CInt(txtSomme(i).Text)
    Next

    With lstCombinaisons
'       .Clear
        Combinaisons Valeur(0), Valeur(1), Valeur(2)
        N = .ListCount
        If N < 0 Then N = 2 ^ 16 + N    ' dépassement de capacité
        .AddItem CStr(N) & " possibilité(s) :", 0
    End With
    Print #1,
    Print #1, CStr(N) & " séries "
    Close #1
End Sub

' -------------------------------------------------------------------
' Nom  : Combinaisons
' Desc : Cherche k nombres différents, inférieurs ou égaux à N,
'        tels que leur somme soit égale à Somme
' -------------------------------------------------------------------
Private Sub Combinaisons( _
    ByVal Somme As Integer, ByVal k As Integer, ByVal N As Integer, _
    Optional ByVal strComb As String = "")
Dim Min As Integer, Max As Integer
Dim i As Integer

    Min = k * (k + 1) / 2
    Max = (N + 1) * k - Min
    If Somme < Min Or Somme > Max Then Exit Sub
   
    If k = 1 Then                       ' fin de la récursivité
        If Somme <= N Then              ' combinaison trouvée
            strComb = strComb & CStr(Somme)
            lstCombinaisons.AddItem strComb
        End If
    Print #1, strComb
    Else                                ' lance la récursivité
        Max = Somme - k * (k - 1) / 2
        Min = (2 * Somme - Max) / k
        If N < Max Then Max = N
        For i = Max To Min Step -1
            Combinaisons Somme - i, k - 1, i - 1, _
                         strComb & CStr(i) & "+"
        Next
    End If
 
End Sub



GDM

lundi 6 février 2006 à 01:46:26 | Re : A Nico1610 - Récursivité

ScSami

Membre Club
Bon, et alors, c'est quoi ton problème ???

Enjoy

( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
lundi 6 février 2006 à 04:17:49 | Re : A Nico1610 - Récursivité

Gobillot

Réponse acceptée !
pour comprendre, il faut prendre un exemple et essayer de suivre:
exemple avec:
Somme=9 k=3 N=5


contrôle:
3+4+5 --> Max=12
1+2+3 --> Min=6
donc 9 est bien compris entre 6 et 12

pour un chiffre en moins (k=2):
- le Minimun est de 3 (=1+2)
   il reste donc un Max de 9 - 3 --> 6
- jusqu'à une limite moyenne ???  <-- c'est ici le point le plus délicat
  Min =  ( (Somme-Max) + (Somme))/k =t (9-6 + 9)/3 = 4
- etc ...

récapitulation:
Somme=9 k=3 N=5
Max=9 - 3*2/2 = 6
Min = (2*9 - 6)/3 =4
N < Max donc Max=5
i=5  Combinaisons 4,2,4,"5+"
       Somme=4 k=2 N=4
       Max=4 - 2*1/2 = 3
       Min= (2*4-3)/2 = 2
       i=3 Combinaisons 1,1,2,"5+3+"
              k=1 donc print "5+ 3+ 1"
       i=2 Combinaisons 2,1,1,"5+2+"
              eXit parce que Somme > 1
i=4  Combinaisons 5,2,3,"4+"
       Somme=5 k=2 N=3
       Max=5 - 2*1/2 = 4
       Min= (2*5-4)/2 = 3
       N < Max donc Max=3
       i=3 Combinaisons  2,1,2,"4+3+"
              k=1 donc print "4+ 3+ 2"
 
Daniel
lundi 6 février 2006 à 05:52:52 | Re : A Nico1610 - Récursivité

Zlub

Membre Club


Salut,

Bel effort de Gobillot !! .. j'ai pas vérifié mais je lui fais confiance...

Bon courage ..

++

Zlub
lundi 6 février 2006 à 17:54:08 | Re : A Nico1610 - Récursivité

Gobillot

pour plus d'explications, il vaudrait mieux s'adresser directement à l'auteur

http://vbfrance.com/code.aspx?ID=20350

Daniel
lundi 6 février 2006 à 18:55:36 | Re : A Nico1610 - Récursivité

Zlub

Membre Club


Salut,


Re bel effort de Gobillot ... qui lache pas le morceau !!


++

Zlub
jeudi 9 février 2006 à 09:47:26 | Re : A Nico1610 - Récursivité

LIQUIDAMBAR

Membre Club
Bonjour,

Merci à tous pour avoir daigné répondre à mon problème. Proficiat Gobillot, c'était on ne peut plus clair. Encore un tout grand merci.

GDM


Cette discussion est classée dans : valeur, max, somme, combinaisons, strcomb


Répondre à ce message

Sujets en rapport avec ce message

probleme de max [ par liam ] etant un bleu en vb j'aimerai un petit coup de main pour coder cet algo, sachant j'essaie de developper une macro excel:debutdif si dif>0 alorsmax(som ProgressBar avec valeur max = Len(txt.Coller.txt) [ par serge ] je n'arrive pas a faire fonctionner un PresseBar avec une boucle For dont i est égale à 1 To Len(txtColler.text)VB6 n'accepte pas la valeur Len....com Min...Max...d'un comboboxe... [ par Gigi ] Bonjour! voici mon probleme... j'ai des nombres dans un comboboxes, et je veux afficher dans des labels respectifs, la valeur minimal et la va problème de label [ par phil98 ] Bonjours à tous et à toutesvoici mon problème, je dois faire une somme de nombres (variable) et mettre la valeur dans un label. Mais la valeur doit s' Slider vertical valeur max en haut VB6 [ par Bubar92Bubar92 ] Bonjourmetre la valeur max du Slider en haut  (Slider a la vertical)ex: min = 0 (valeur en bas)     max = 65535 (valeur en haut)merci d'avanceC.V <TAB Problème urgent au niveau des états !!! [ par billou_13 ] Voila j'explique mon problème, j'ai demandé toute la journée a des amis, puis au boulot de ma mere sans aucune personne qui ne savait quoi faire ??? valeur max [ par lea75 ] Bonsoir à tous,J'aimerais écrire une requete qui me trouve la valeur max de l'id de ma table.Et j'ai écrit req="select maxval(idreservations) from res Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? [ par Moi ] Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? Mettre une valeur 0 vide [ par TTHIERRY ] bonjour,j'es un classeur avec deux feuil Excel , Dans le feuil1  une cellule qui donne la somme d'une colonne  SOMME:(A1;A32) cette valeur est reporte pb programmation en VBA d'une formule excel personnalisée [ par heriss ] Bonjour,Mon but est de créer une fonction qui ferai un test pour identifier si les libellés d'articles (1 colonne => data) contiennent le nom d'une sé


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales