Funció de permutació. X38440


Statement
 

pdf   zip   main.cc

html

Donat un vector de reals p, fes un procediment amb la següent capçalera:

vector<double> permutacio (vector<double>& p)

que calculi una permutació del vector p. Cal fer-ho de la següent manera:

  1. Calcularem un nombre aleatori amb la funció rand. Aquest nombre ha d’estar entre 0 i N−2, on N és la mida de p. Sigui i = rand().
  2. Intercanviem l’element pi amb l’element pN−1.
  3. Procedim a fer el mateix que en el primer pas, però ara limitem més el nombre aleatori, que ha d’estar entre 0 i N−3, i intercanviarem l’element que doni la funció rand() amb l’element pN−2.
  4. Farem això mentre hi hagi elements a intercanviar.

Cal escriure només la funció. El programa principal serà ignorat. Assumiu que en el programa principal s’ha iniciat la funció srand amb paràmetre 2.

Entrada

La funció tindrà com a paràmetres un vector de reals: p.

Sortida

Una permutació d’p.

Public test cases
  • Input

    9
    1 2 3 4 5 6 7 8 9
    

    Output

    4 5 1 3 2 9 6 8 7 
    
  • Input

    2
    1 2
    

    Output

    2 1 
    
  • Input

    22 
    50 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    

    Output

    20 5 15 19 2 1 13 10 18 16 12 9 17 4 11 50 6 8 14 20 3 7 
    
  • Information
    Author
    Jaume Baixeries
    Language
    Catalan
    Official solutions
    Unknown. This problem is being checked.
    User solutions
    C++