Questione : Permutazione di C++ con la procedura del rimontaggio

Sto cercando una procedura che genererà, in tutto l'ordine, tutte le permutazioni degli articoli “di n„ scelti dagli articoli “di m.„ CON IL RIMONTAGGIO (cioè la m. sceglie la n con il rimontaggio).  Ci saranno le permutazioni del m^n in total.

so tutto (3^2 = 9) le permutazioni di 2 articoli con il rimontaggio dai 3 articoli “a„, “b„, “c„ è: l'edizione del

aa
ab
ba
bb
cc
ac
ca
bc
cb

This è stata affrontata senza rimontaggio in: href= " http://www.experts-exchange.com/Programming/Languages/CPP/Q_10291490.html " del

bisogno del ramming/Languages/CPP/Q_10291490.html

I del e.com/Prog di http://www.experts-exchang esso con replacement.
class= del

Risposta : Permutazione di C++ con la procedura del rimontaggio

Qui è una procedura per le permutazioni con il rimontaggio. Ho modificato il codice da:
       http://en.wikipedia.org/wiki/Itoa

Ciò bolle giù ad un problema di base. Se avete un insieme {a, b, c, d, e} e 3 scanalature, quindi avete numeri di base 5^3: aaa, aab, aac, ADD, aae, aba,…. Per ottenere tutti i risultati unici possibili, poterlo avere voi a + operatore in moda da a+1 --> b

e+1 --> a con un trasporto in modo che, per esempio:
abe + 1 --> ACA


L'uscita è:
Numero di base # dell'elemento
    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;
nPerms senza firma di int del const = int (  prigioniero di guerra (galleggiante (N_ITEMS), galleggiante (M_SLOTS)) );

 intToRadix vuoto (int senza firma n, carbone * streptococco, base di int)
 {
     int i=0;
     memset (streptococco, “0„, M_SLOTS);
     streptococco [M_SLOTS] = “\ 0„;
     fare {
         streptococco [i++] = della base di n % + “0„;
     } mentre ((base di n/=) > 0);
 }

conduttura di int ()
{
   strPerm del carbone [M_SLOTS+1];
   printf (“numero \    n di base # dell'elemento„);
   per (permNum senza firma di int = 0; permNum  < nPerms="">
           
Altre soluzioni  
 
programming4us programming4us