Здравствуйте! Помогите, пожалуйста, придумать КРАСИВОЕ решение следующей проблемы. Необходимо организовать перебор всех возможных вариантов символов в определенном количестве позиций. Т.е., например, если есть 3 позиции, а допустимые символы представляют собой цифры от 0 до 9, то имеем 10

3 возможных вариантов. Если символами являются символы (a - f), то имеем 6

3 возможных вариантов и т.д.
Я реализовал простенький алгоритмик, но он крайне не красив. Потому что я предполагаю детерминированное определение количества позиций. А мне бы хотелось в конечном итоге, чтобы это количество было переменной.
Примеч.: //dynamicMas - выделяемый мной динамический массив, размерностью [x

3, 3] (x - количество перебираемых символов)
//masLength - допустимое количество строк данного массива
//enableSymb - строка перебираемых символов, ограниченная '\0'
Код:
char **MasFulling(char **dynamicMas, int masLength, char *enableSymb)
{
for (int i = 0, j = 0, k = 0, l = 0; i < masLength; i++)
{
char inputLetter = *(enableSymb + j);
int minInd = 0;
if (inputLetter == '\0')
{
j = 0;
k = k + 1;
if(*(enableSymb + k) == '\0')
{
k = 0;
l = l + 1;
dynamicMas[i][minInd + 2] = *(enableSymb + l);
}
dynamicMas[i][minInd + 2] = *(enableSymb + l);
dynamicMas[i][minInd + 1] = *(enableSymb + k);
dynamicMas[i][minInd] = *enableSymb;
goto exit;
}
dynamicMas[i][minInd + 2] = *(enableSymb + l);
dynamicMas[i][minInd + 1] = *(enableSymb + k);
dynamicMas[i][minInd] = inputLetter;
exit:
j++;
}
Очень хочется сделать красивое решение, а как не знаю(