Ho uno stupido problemino di calcolo combinatorio che non riesco a risolvere in modo semplice.

Devo creare un generatore di combinazioni (con ripetizione)
AAA, AAB, ABA, ...

partendo da un array di n elementi
int array[] = {10, 20, 30, 40};

devo generare tutte le possibili combinazioni

qualcuno puo' aiutarmi?

Grazie