Vraag : C++ permutatie met vervangingsalgoritme

Ik zoek een algoritme dat, in om het even welke orde zal produceren, alle die permutaties van „n“ punten van „m“ punten worden gekozen MET VERVANGING (d.w.z. kiest m n met vervanging).  Er zal permutaties m^n in total.

so alle (3^2 = 9) permutaties van 2 punten met vervanging van de 3 punten 'a', 'b' zijn, „c“ is: de kwestie

aa
ab
ba
bb
cc
ac
ca
bc
cb

This behandeld zonder vervanging in:

http://www.experts-exchang e.com/Prog ramming/Languages/CPP/Q_10291490.html

I vergt het met replacement.

Antwoord : C++ permutatie met vervangingsalgoritme

Hier is een algoritme voor permutaties met vervanging. Ik wijzigde code van:
       http://en.wikipedia.org/wiki/Itoa

Dit kookt neer aan een wortelprobleem. Als u een reeks {a, B, c, D, e} en 3 groeven hebt, dan hebt u 5^3 wortelaantallen: aaa, aab, aac, BAD, aae, aba,…. Om alle mogelijke unieke resultaten te krijgen, kunt u hebben a + exploitant zodat a+1 --> B

e+1 --> draagt a met zodat, bijvoorbeeld:
abe + 1 --> aca


De output is:
Het Aantal van het element # van de Wortel
    1 00
    2 10
    3 20
    4 01
    5 11
    6 21
    7 02
    8 12
    9 22
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:
#include  
#include  
#include  

const int. N_ITEMS = 8;
const int. M_SLOTS = 3;
const niet ondertekend int. nPerms = int. (  pow (vlotter (N_ITEMS), vlotter (M_SLOTS)) );

 nietige intToRadix (niet ondertekend int. n, klusjes * streptokok, int.basis)
 {
     int. i=0;
     memset (streptokok, „0“, M_SLOTS);
     streptokok [M_SLOTS] = „\ 0“;
     {
         streptokok [i++] = n% basis + „0“;
     } terwijl ((n/= basis) > 0);
 }

int. leiding ()
{
   klusje strPerm [M_SLOTS+1];
   printf (het „Aantal \    n van het Element # van de Wortel“);
   voor (niet ondertekende int.permNum = 0; permNum  < nPerms="">
           
Andere oplossingen  
 
programming4us programming4us