Funció de permutació. X38440


Statement
 

pdf   zip   main.cc

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

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

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

  1. Calcularem un nombre aleatori amb la funció randrand. Aquest nombre ha d’estar entre 00 i N2N-2, on NN és la mida de pp. Sigui i=rand()i = rand().

  2. Intercanviem l’element pip_i amb l’element pN1p_{N-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 00 i N3N-3, i intercanviarem l’element que doni la funció rand()rand() amb l’element pN2p_{N-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ó srandsrand amb paràmetre 22.

Entrada

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

Sortida

Una permutació d’pp.

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.
    User solutions
    C++