Frage : C++ Permutation mit Wiedereinbaualgorithmus

Ich suche nach einem Algorithmus, der, in jedem möglichem Auftrag, alle Permutationen „der n-“ Einzelteile erzeugt, die „von den m-“ Einzelteilen MIT WIEDEREINBAU gewählt werden (d.h. m wählen n mit Wiedereinbau).  Es gibt m^n Permutationen in total.

so alle (3^2 = 9) Permutationen von 2 Einzelteilen mit Wiedereinbau von den 3 Einzelteilen „a“, „b“, „c“ ist:

aa
ab
ba
bb
cc
ac
ca
bc
cb

This Punkt wurde ohne Wiedereinbau in angesprochen:

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

I Notwendigkeit es mit replacement.

Antwort : C++ Permutation mit Wiedereinbaualgorithmus

Ist hier ein Algorithmus für Permutationen mit Wiedereinbau. Ich änderte Code von:
       http://en.wikipedia.org/wiki/Itoa

Dieses kocht unten zu einem Wurzelproblem. Wenn Sie einen Satz {a, b, c, d, e} und 3 Schlitze haben, dann Sie Zahlen der Wurzel 5^3 haben: aaa, aab, aac, AAD, aae, ABA,…. Um alle möglichen einzigartigen Resultate zu erhalten, können Sie haben a + Operator damit a+1 --> b

e+1 --> a mit tragen, damit, z.B.:
abe + 1 --> ACA


Der Ausgang ist:
Element-# Wurzel-Zahl
    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 nicht unterzeichnete int nPerms = int (  Kriegsgefangen (Hin- und Herbewegung (N_ITEMS), Hin- und Herbewegung (M_SLOTS)) );

 leeres intToRadix (nicht unterzeichneter int n, Putzfrau * str, int-Unterseite)
 {
     int i=0;
     memset (str, „0“, M_SLOTS);
     str [M_SLOTS] = „\ 0“;
     tun {
         str [i++] = n-% Unterseite + „0“;
     } während ((Unterseite n-/=) > 0);
 }

int-Hauptleitung ()
{
   Putzfrau strPerm [M_SLOTS+1];
   printf („Element #    Wurzel-Zahl \ n“);
   für (nicht unterzeichnetes int permNum = 0; permNum  < nPerms="">
           
Weitere Lösungen  
 
programming4us programming4us