这个问题是针对我正在尝试编写的一个程序,该程序涉及将物理部件链连接在一起。我相信我已将其提炼成最简单的问题形式。如果有人知道描述此问题的任何其他词,我也将不胜感激,因为搜索相关问题的大约 30 分钟甚至没有为这个问题找到一个名称。
你有 N 个向量。如果您从每个向量中选择一个值并且不允许任何重复,那么您将得到一个我试图找到的类型的排列。什么是伪代码算法可以在没有暴力破解的情况下找到所有这些?
示例:
您有向量
v1=[1 2] v2=[1 2 3] v3=[1 2 3 4]
(编辑说明:向量的嵌套是无意的,不能在算法中利用。)您从每个向量中选择值并且不允许重复。
Value 1 is from v1 ---> 2
Value 2 is from v2 ---> 1
Value 3 is from v3 ---> 4
Resulting permutation is [2 1 4].
这是一种允许的排列。这是一个不允许的排列示例,因为它重复。
Value 1 is from v1 ---> 2
Value 2 is from v2 ---> 1
Value 3 is from v3 ---> 2
Resulting permutation is [2 1 2], which is invalid due to repeats.
什么是找到所有有效排列的算法?
如果您可以在计算之前计算出有多少排列,则可以加分。
如果我能在其他人之前找到答案,我一定会回复。