【发布时间】:2018-03-23 07:40:50
【问题描述】:
我有一个无法解决的问题,我希望有人可以帮助我。
想象以下情况:
有一个人名列表。因此,每个人都是具有“名称”属性的对象。从该列表中,以随机顺序选择随机数量的人(因此并非所有人总是在选择中),并且每个人被选择不超过一次。但是,名称可能不是唯一的:列表中可能有多个名称为“Smith”的人。对于此示例,让我们假设每个名称只是字母表中的一个字母。所以我可能会收到以下选择:
[V、C、R、C、F、X、R、C]
而下一次的选择可能会完全不同。该选择中的每个元素都是不同的人,但有些名字出现了不止一次。
让我们添加数字来澄清:
[V, C1, R1, C2, F, X, R2, C3]
现在我需要所有可能的人组合,其中每个名字只出现一次,但要尊重他们在选择中列出的顺序。选择中的每个唯一名称都应在组合中。
例如,在这种情况下,我需要:
[V, C1, R1, F, X],
[V, R1, C2, F, X],
[V, R1, F, X, C3],
[V, C1, F, X, R2],
[V, C2, F, X, R2]
...
等等。人们的位置不应该改变(即 [C1, V, ...] 不行,因为 "V" 不应该在 "C1" 之后)。
我假设我需要递归和一些方法来跟踪名称,但这就是我的大脑开始融化的地方。 ;-) 我找到了以任何顺序获得所有可能排列的脚本,但没有这样的。
谁能帮帮我?
谢谢!
【问题讨论】:
标签: javascript arrays algorithm