【发布时间】:2017-07-06 20:38:37
【问题描述】:
我希望在 7 个字母集中找到以下 6 个字母的所有可能排列。 [a,b,c,d,e,f]。
问题是每个字母对应一个百分比。每 7 个字母集的总百分比需要为 100%
答:0% <= a < 1%
1% <= b <= 5%
C:5% < c <= 25%
D:25% < d <= 50%
邮箱:50% < e <= 75%
女:75% < f <= 100%
例如,这些是可能的集合:
-
[a,a,a,a,a,a,f]: 所有的 A 都可能是 0% 而 F 可能是 100% -
[d,d,b,a,a,a,a]:每个 D 可能是 47%。 B 可能占 5%,A 可能占剩余的 1%。
但这些是不可能的:[f,a,a,a,a,a,f] 或 [e,e,e,a,a,a,a],因为它们的总数超过 100%。
我一直在尝试用 javascript 来实现,但运气不佳。我能够使用这个小提琴生成所有可能的排列:https://jsfiddle.net/v4s6xk5x/。不幸的是,这没有考虑百分比。
我真的只想要排列而不需要代码。但是任何语言的代码都会有帮助,这样我就可以理解发生了什么。
如果您需要更多信息,请告诉我。
【问题讨论】:
-
只需在生成期间用它们已经拥有的百分比的最小和最大总和来注释每个选择(注意它们是(多)子集,而不是排列),然后过滤掉那些间隔没有的包括 100 个。
-
True @Will ,它与那个类似,但问题是一个字符代表一个百分比范围而不是一个恒定的特定值,我现在正在研究一种蛮力方法......
-
递归似乎是显而易见的方法。选择任何保持最小总数 =100% 则保存。
-
@גלעדברקן:没什么区别。假设您有三个不同百分比的
a;如果将所有三个百分比都替换为平均值,那么总和将完全相同,并且范围内百分比的平均值保证在该范围内,因为该范围是连续的。
标签: javascript algorithm permutation