Question : Permutation de C++ avec l'algorithme de remplacement

Je recherche un algorithme qui produira, dans n'importe quel ordre, de toutes les permutations des articles de « n » choisis des articles de « m » AVEC LE REMPLACEMENT (c.-à-d. m choisissent n avec le remplacement).  Il y aura des permutations de m^n dans total.

so tout (3^2 = 9) des permutations de 2 articles avec le remplacement des 3 articles « a », « b », « c » est : l'issue du

aa
ab
ba
bb
cc
ac
ca
bc
cb

This a été abordée sans remplacement dans : href= " http://www.experts-exchange.com/Programming/Languages/CPP/Q_10291490.html " du

le besoin du ramming/Languages/CPP/Q_10291490.html

I du e.com/Prog de http://www.experts-exchang il avec replacement.
class= de

Réponse : Permutation de C++ avec l'algorithme de remplacement

Voici un algorithme pour des permutations avec le remplacement. J'ai modifié le code de :
       http://en.wikipedia.org/wiki/Itoa

Ceci bout vers le bas à un problème de base. Si vous avez un ensemble {a, b, c, d, e} et 3 fentes, alors vous avez des nombres de la base 5^3 : D.C.A., aab, aac, le DAA, aae, aba,…. Pour obtenir tous les résultats uniques possibles, vous pouvez avoir a + opérateur de sorte qu'a+1 --> b

e+1 --> a avec un transport de sorte que, par exemple :
abe + 1 --> ACA


Le rendement est :
Nombre d'élément # de base
    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 international N_ITEMS = 8 ;
const international M_SLOTS = 3 ;
nPerms non signés du const international = international (  prisonnier de guerre (flotteur (N_ITEMS), flotteur (M_SLOTS)) ) ;

 intToRadix vide (international non signé n, char * streptocoque, base d'international)
 {
     international i=0 ;
     memset (streptocoque, « 0 », M_SLOTS) ;
     streptocoque [M_SLOTS] = « \ 0 » ;
     faire {
         streptocoque [i++] = % de base de n + « 0 » ;
     } tandis que ((base de n/=) > 0) ;
 }

force d'international ()
{
   strPerm de char [M_SLOTS+1] ;
   printf (« nombre d'élément    # de base \ n ») ;
   pour (permNum non signé d'international = 0 ; permNum  < nPerms="">
           
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us