【发布时间】:2019-03-11 00:19:46
【问题描述】:
我的目标是创建一个通用函数,该函数根据给定的模板和参数创建一个用排列(向量)填充的二维向量,如下所示:
- 必须根据模板作为函数参数向量来固定向量的某些位置。例如,如果给定的模板是
{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> 库的情况下生成这些排列。
我认为创建递归函数是最好的选择,但我不知道如何前进。任何建议都会有所帮助。
谢谢
【问题讨论】:
-
尝试将问题分解为更小的部分。您可以从生成
-1应替换为的数字列表开始。 -
我不确定我是否会称这些排列。通常排列采用给定的“有序/索引”集并更改顺序。在这种情况下,您似乎允许我们从中绘制的集合中的多个元素来填充
-1点。
标签: c++ algorithm vector permutation