Generer des combinaisons - Structure en Arbre [Résolu]

Messages postés
2
Date d'inscription
dimanche 4 septembre 2005
Dernière intervention
4 août 2010
- - Dernière réponse : Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
- 1 juil. 2010 à 18:58
Bonjour,

J'ai un problème d'arrangement à résoudre:
J"ai des objets (Strings ou autres objets) à arranger suivant toutes les combinaisons possibles : par exemples si mes objets sont A,B,C
mon programme doit générer la liste suivante:

ABC-ACB-BAC-BCA-CAB-CBA

Le nombre peut aller à quelques dizaines! soit 3628800 combinaisons par exemple pour 10 objets (factoriel 10)
J'ai eu l'idée d'utiliser un structure d'arbre comme illustré dans le screenshot ci dessous(illustré par le contrôle TreeView)
http://fr.tinypic.com/view.php?pic=f36p8i&s=6

J'ai deux question:

1) Est ce qu'il y a une meilleure méthode pour effectuer cette tache

2) J'utilise maintenant le contrôle TreeView mais ça ne me permet pas de stocker des objets quelconques et c'est lourd pour des long traitements. Est ce qu'il y a des classes prêtes qui permettent de stocker des arbres (n-aires)?

Je vous remercie d'avance
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
3
Merci
1) Est ce qu'il y a une meilleure méthode pour effectuer cette tache

A part des boucles, perso je ne vois pas, peut être une formule mathématique basé sur la valeur octale des caractère ?

2) J'utilise maintenant le contrôle TreeView mais ça ne me permet pas de stocker des objets quelconques et c'est lourd pour des long traitements. Est ce qu'il y a des classes prêtes qui permettent de stocker des arbres (n-aires)?

Tu peux recréer des classes sérailisables reprenant le principe des nodes avec parent et enfant, du style :

Public Class NodesCollection
    Inherits List(Of Node)

    Private _Parent As Node

    Sub New()
    End Sub
    Friend Sub New(ByVal parent As Node)
        _Parent = Parent
    End Sub
    Protected Overloads Sub Add(ByVal item As Node)
        item.Parent = _Parent
        MyBase.Add(item)
    End Sub

End Class

Public Class Node

    Private _Value As String
    Private _Parent As Node
    Private _Childs As NodesCollection

    Public Property Value() As String
        Get
            Return _Value
        End Get
        Set(ByVal value As String)
            _Value = value
        End Set
    End Property
    Public Property Parent() As Node
        Get
            Return _Parent
        End Get
        Set(ByVal value As Node)
            _Parent = value
        End Set
    End Property
    Public Property Childs() As NodesCollection
        Get
            Return _Childs
        End Get
        Set(ByVal value As NodesCollection)
            _Childs = value
        End Set
    End Property

    Friend Sub New(ByVal value As String, ByVal Parent As Node)
        _Parent = Parent
        _Value = value
        _Childs = New NodesCollection(Me)
    End Sub
    Public Sub New(ByVal value As String)
        _Value = value
        _Childs = New NodesCollection(Me)
    End Sub

End Class




Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Merci Mayzz 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de Mayzz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.