Cuestión : Permutación de C++ con algoritmo del reemplazo

Estoy buscando un algoritmo que genere, en cualquier orden, todas las permutaciones de los artículos de “n” elegidos de artículos de “m” CON EL REEMPLAZO (es decir m elige n con el reemplazo).  Habrá permutaciones del m^n en total.

so todo (3^2 = 9) las permutaciones de 2 artículos con el reemplazo de los 3 artículos “a”, “b”, “c” es: la edición del

aa
ab
ba
bb
cc
ac
ca
bc
cb

This fue abordada sin el reemplazo en: href= " http://www.experts-exchange.com/Programming/Languages/CPP/Q_10291490.html " del

necesidad del ramming/Languages/CPP/Q_10291490.html

I del e.com/Prog de http://www.experts-exchang él con replacement.
class= del

Respuesta : Permutación de C++ con algoritmo del reemplazo

Aquí está un algoritmo para las permutaciones con el reemplazo. Modifiqué código de:
       http://en.wikipedia.org/wiki/Itoa

Esto hierve abajo a un problema de la raíz. Si usted tiene un sistema {a, b, c, d, e} y 3 ranuras, después usted tiene números de la raíz 5^3: aaa, aab, aac, DAA, aae, aba,…. Para conseguir todos los resultados únicos posibles, usted puede tener a + operador de modo que a+1 --> b

e+1 --> a con un llevar de modo que, por ejemplo:
abe + 1 --> aca


La salida es:
Número del elemento # de la raíz
    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 internacional N_ITEMS = 8;
const internacional M_SLOTS = 3;
nPerms sin firmar del const internacional = internacional (  prisionero de guerra (flotador (N_ITEMS), flotador (M_SLOTS)) );

 intToRadix vacío (internacional sin firmar n, carbón de leña * str, base de la internacional)
 {
     internacional i=0;
     memset (str, “0”, M_SLOTS);
     str [M_SLOTS] = “\ 0”;
     hacer {
         str [i++] = de la base de n % + “0”;
     } mientras que ((base de n/=) > 0);
 }

cañería de la internacional ()
{
   strPerm del carbón de leña [M_SLOTS+1];
   printf (“número \    n del elemento # de la raíz”);
   para (permNum sin firmar de la internacional = 0; permNum  < nPerms="">
           
Otras soluciones  
 
programming4us programming4us