Fråga : C++-permutation med utbytesalgoritm

Förmiddag som I söker efter en algoritm, som ska, frambringar, i några beställer, alla permutations av ”n-” objekt som väljs från ”M-” objekt MED UTBYTET (dvs. M väljer n med utbytet).  Det ska finns m^npermutations i total.

so alla (3^2 = 9) permutations av 2 objekt med utbytet från de 3 objekten ”a”, ”b”, ”c” är:

aa
ab
ba
bb
cc
ac
ca
bc
cb

This utfärdar tilltalades utan utbyte i: href= " http://www.experts-exchange.com/Programming/Languages/CPP/Q_10291490.html " för

behov för ramming/Languages/CPP/Q_10291490.html

I för http://www.experts-exchang e.com/Prog det med replacement.
" klar "

Svar : C++-permutation med utbytesalgoritm

Är här en algoritm för permutations med utbytet. Jag ändrade kodifierar från:
       http://en.wikipedia.org/wiki/Itoa

Detta kokar besegrar till ett radixproblem. Om du har en uppsättning {a, b, c, D, e} och 3 springor, då du har radixen 5^3 numrerar: aaa aab, aac, aad, aae, aba,…. Att få all möjlighet unika resultat du kan ha a + operatören så att a+1 --> b
…,
e+1 --> a med en bära, så att, till exempel:
abe + 1 --> aca


Tillverkad är:
Beståndsdelen nr. radixen numrerar
    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;
unsigned int-nPerms för const = int (  powen (flötet (N_ITEMS), flötet (M_SLOTS)) );

 utan laga kraft intToRadix (unsigned int n, röding * stren, int baserar),
 {
     int i=0;
     memset (str, ”0”, M_SLOTS);
     str [M_SLOTS] = ”\ 0”;
     gör {
         stren [i++] = n % baserar + ”0”;
     } fördriva ((n/= baserar), > 0);
 }

huvudsaklig int ()
{
   bränna till kol strPerm [M_SLOTS+1];
   printf (”beståndsdel- nr.    Radixnumrerar \ n”);
   för (unsigned int-permNum = 0; permNum  < nPerms="">
           
Andra lösningar  
 
programming4us programming4us