Моя цель - создать общую функцию, которая создает двумерный вектор, заполненный перестановками (вектор), на основе заданного шаблона и параметров следующим образом:
- некоторые позиции вектора должны быть зафиксированы на основе шаблона как вектора параметров функции. Например, если задан шаблон
{0, 1, 0, -1, 3, -1}
, это означает, что перестановки будут варьироваться только числами в местах -1
.
n
. n-1
- это диапазон целых чисел, которые может включать в себя перестановка. Например. если n = 4
, только 0, 1, 2, 3
может появиться в векторе
length
, что является длиной вектора
Обратите внимание, что если число из шаблона уже присутствует в нем, оно не будет сгенерировано в перестановках.
Итак, приведем пример:
n = 6, length = 5, template = {2, 1, 0, -1, 0, -1}
the permutations are:
{2, 1, 0, 3, 0, 3}
{2, 1, 0, 3, 0, 4}
{2, 1, 0, 3, 0, 5}
{2, 1, 0, 4, 0, 3}
{2, 1, 0, 4, 0, 4}
{2, 1, 0, 4, 0, 5}
{2, 1, 0, 5, 0, 3}
{2, 1, 0, 5, 0, 4}
{2, 1, 0, 5, 0, 5}
Как видите, числа генерируются только в индексах 3 и 5 (места, где это было -1
), а также в местах, которые не включены 0, 1 or 2
, так как они уже появляются в шаблоне.
Мне нужно сгенерировать эти перестановки без использования библиотеки <algorithm>
.
Полагаю, создание рекурсивной функции - лучший вариант, но я не знаю, как двигаться дальше. Любые предложения помогут.
Спасибо