Tworzenie wszystkich mozliwych kombinacji z podanych znaków

0

Chcialbym napisac algorytm ktory wypisywalby wszystkie mozliwe kombinacje z podanych znakow i podanej dlugosci. Czyli np. dla [a, b, c] i dlugosci 2 wypisalby:

a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc

Potrafie to zrobic na zasadzie zagniezdzonych petli ale to sprawia taki problem ze ilosc petli musi byc rowna podanej dlugosci, wiec to zdecydowanie zle rozwiazanie. Ma ktos lepszy sposob?

0

Jest masa algorytmów o różnej złożoności obliczeniowej. Generalnie google: permutation with repetition algorithm

1
#include <iostream>
using namespace std;

int main()
  {
   static char Signs[]={'a','b','c'};
   const unsigned SignCount=sizeof(Signs)/sizeof(*Signs);
   const unsigned Count=2;
   unsigned Tb[Count]={0};
   while(true)
     {
      for(unsigned i=0;i<Count;++i) cout<<Signs[Tb[i]];
      cout<<endl;
      unsigned p=Count;
      while(p--)
        {
         if(++Tb[p]<SignCount) break;
         Tb[p]=0;
        }
      if(p>=Count) break;
     }   
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1