IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Permutation d'un nombre N


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Permutation d'un nombre N
    Bonjour
    S'il vous plait, j'ai besoin de vos aide.
    Je veux créer les permutations d’un nombre N, sachant que le premier nombre ne rentre pas dans les permutations !!!

    Exemple :
    1 – 2 – 3 – 4:

    * 1 – 2 – 3 – 4
    * 1 – 2 – 4 – 3
    * 1 – 3 – 2 – 4
    * 1 – 3 – 4 – 2
    * 1 – 4 – 2 – 3
    * 1 – 4 – 3 – 2

    Merci

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Voici ce qui répondra partiellement à ta demande.
    Il s'agit d'un algorithme qui effectue toutes les permutations des caractères d'une chaine. Il te faudra bien entendu l'adapter à ton travail.
    Par rapport à ta demande, il suffit de l'exécuter sur la chaine 234 et d'afficher les résultats précédés d'un premier chiffre (1, par ex.), le tout avec le formatage qui te plait (espace entre les chiffres, tirets, ...).
    Le module a été initialement écrit en espagnol, c'est pourquoi tu trouveras des noms de variables et de procédures "en espagnol". Mais faciles à comprendre (ex. Resultados = Résultats).

    Bon travail ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
        Sub Main()
     
            Dim CadenaFuente As String  ' Chaine source
     
            Console.WriteLine("***********************")
            Console.Write("Cadena ? ")   ' Chaine ?
            CadenaFuente = Console.ReadLine()
     
            Console.WriteLine("Esperamos ...")  ' Patienter 
     
            Console.WriteLine("***********************")
            ' Console.WriteLine("Estan todas las permutaciones, con duplicados si existan letras duplicadas en la cadena")
            Console.WriteLine("Voici toutes les permutations, avec doublons s'ils y a des lettres en double dans la chaine")
            Dim ListaResultados() As String = Nothing
            TodasPermutaciones(CadenaFuente, ListaResultados)   ' Resultados no ordonnar  Résultats non ordonnés
            For i As Integer = 0 To ListaResultados.Count - 1
                Console.WriteLine(ListaResultados(i))
            Next
            Console.WriteLine(ListaResultados.Count & " résultados")
     
            Console.WriteLine("Una tecla para la continuacion ...")   ' une touche pour continuer ...
            Console.ReadKey()
     
        End Sub
     
        Private Function Factorial(N As Integer) As Integer
            If N = 1 Then
                Return 1
            Else
                Return N * Factorial(N - 1)
            End If
        End Function
     
        Private Sub TodasPermutaciones(CadenaFuente As String, ByRef Resultados() As String)   ' ChaineSource, Résultats
            ' Da todas permutaciones. Existent duplicados si existen letras duplicadas en la caden fuente.
            ' Donne toutes les permutations. Des permuations existent en doubles s'il y a des caractères identiques dans la chaine source.
     
            Dim i As Integer
            Dim l As Integer
            Dim k As Integer
            Dim j As Integer
     
            Dim Posicion As Integer = 0
     
            Dim CantidadCaracters As Byte
            Dim CantidadResultados As Integer
            Dim CadenaTmp As String
            Dim ResultadosTmp() As String
     
            CantidadCaracters = CadenaFuente.Length
            If CantidadCaracters = 0 Then
                ReDim Resultados(0)
                Resultados(0) = ""
                Exit Sub
            End If
     
            CantidadResultados = Factorial(CantidadCaracters)
            ReDim Resultados(CantidadResultados - 1)
     
            If CantidadCaracters = 1 Then
                Resultados(0) = CadenaFuente
                Exit Sub
            End If
     
            For i = 0 To CantidadCaracters - 1
                CadenaTmp = String.Empty
                For j = 0 To CantidadCaracters - 1
                    If j <> i Then
                        CadenaTmp = CadenaTmp & CadenaFuente.Substring(j, 1)
                    End If
                Next j
     
                ReDim ResultadosTmp(CadenaTmp.Length - 1)
                If CadenaTmp.Length = 1 Then
                    ResultadosTmp(0) = CadenaTmp
                Else
                    TodasPermutaciones(CadenaTmp, ResultadosTmp)
                End If
     
                For k = 0 To CantidadResultados / CantidadCaracters - 1
                    For l = 0 To ResultadosTmp.Count - 1
                        Resultados(l + Posicion) = CadenaFuente.Substring(i, 1) & ResultadosTmp(l)
                    Next l
                Next k
     
                Posicion += CantidadResultados / CantidadCaracters
     
            Next i
     
        End Sub
    Nom : Permut.jpg
Affichages : 68
Taille : 23,3 Ko

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2014, 20h48
  2. permutation de nombre sans doublon
    Par Neitsa dans le forum Général Python
    Réponses: 3
    Dernier message: 04/07/2011, 18h48
  3. génération de x permutations des nombres de 1 à n
    Par sophielow dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/05/2011, 19h08
  4. Permutation des nombres dans un vecteur
    Par Cluster dans le forum Pascal
    Réponses: 6
    Dernier message: 01/03/2009, 19h14
  5. Comment calculer le nombre de permutation ?
    Par skorpius dans le forum Mathématiques
    Réponses: 3
    Dernier message: 12/11/2007, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo