Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    28

    [c++] permutazione di tutte le possibili combinazioni di un array

    Per esempio io ho un array di 5 elementi:

    int p[5]={0,1,2,3,4};

    siccome sono 5 elementi avrò 120 combinazioni n!=5!=120,quindi per ogni numero di partenza avrò 24 combinazioni. 120/5=24
    ho provato a trascrivere un po di soluzioni, per esempio:
    0 1 2 3 4
    0 1 2 4 3
    0 1 3 4 2
    0 1 3 2 4
    0 1 4 2 3
    0 1 4 3 2
    0 2 1 3 4
    0 2 1 4 3
    0 2 3 4 1
    0 2 3 1 4
    ecc.
    insomma iniziando con lo zero avrò 24 combinazioni,iniziando con uno 24 combinazioni
    io devo trovare tutte e 120 combinazioni, cioè in realtà devo passare gli p[i] in combinazioni diverse ad una funzione.
    Spero di essere stato chiaro!
    Cmq non riesco ad individuare un algoritmo per fare ciò!

  2. #2
    Prima ordina l'array, quindi usa std::next_permutation.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    Io, comunque, mi sono divertito a creare questo algoritmo mentre aspettavo la cena....

    codice:
    Dim x(5), s As String
    x(1) = "1": x(2) = "2": x(3) = "3": x(4) = "4": x(5) = "5"
    For i = 1 To 5
      For j = 1 To 5
        For h = 1 To 5
          For k = 1 To 5
            For l = 1 To 5
               a = x(i)
               b = x(j)
               c = x(h)
               d = x(k)
               e = x(l)
               For m = 1 To 4
                 For n = m + 1 To 5
                      s = a + b + c + d + e
                      If Mid(s, m, 1) = Mid(s, n, 1) Then GoTo no
                 Next
               Next
               t = t + 1
               List1.AddItem a + b + c + d + e + "          " + Str(t)
    no:
            Next
          Next
        Next
      Next
    Next

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.