gpt4 book ai didi

algorithm - 元素混合算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:31:26 24 4
gpt4 key购买 nike

不确定标题。

这是我需要的。

例如让这组元素 20*A, 10*B, 5*C, 5*D, 2*E, 1*F我需要混合它们,这样两个相同的元素就不会彼此相邻,而且我可以说我不希望 B 和 C 彼此相邻。元素必须均匀分布(如果有 2 个 E,一个应该在接近开始/上半场,第二个应该在接近尾声/在下半场。元素的数量当然可以改变。

我还没有做过这样的事情。是否有此类算法的一些知识库,我可以在哪里找到解决此类问题的一些提示和方法,还是我必须自己完成所有数学运算?

最佳答案

我认为解决方案非常简单。

从一个初始化为值的数组x开始,这样您需要放置的每一项都有一个空间。

然后,对于按频率降序排列的每个 (item, frequency) 对,将 item 值分配给 x 从开始的交替槽中第一个 插槽。

以下是您的示例的工作原理:

20*A    A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A
10*B ABABABABABABABABABABA_A_A_A_A_A_A_A_A_A
5*C ABABABABABABABABABABACACACACACA_A_A_A_A
2*E ABABABABABABABABABABACACACACACAEAEA_A_A
1*F ABABABABABABABABABABACACACACACAEAEAFA_A

此时我们失败了,因为 x 仍然有一个空槽。请注意,我们本可以从一开始就确定这一点,因为我们在 A 之间至少需要 19 个槽位,但我们只有 18 个其他项。

更新

Leonidas 现在解释说元素应该“平均”分配(也就是说,如果我们有 k 个特定种类的元素,并且有 n 个槽位要填充,则 n/k 个槽位的每个“桶”必须包含一个元素那种。

我们可以通过分散分配而不是简单地交替使用插槽来适应这种限制。在这种情况下(假设有 2 个 F,这样我们就可以解决这个问题),我们将有

20*A    A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A_A
10*B ABA_ABA_ABA_ABA_ABA_ABA_ABA_ABA_ABA_ABA
5*C ABACABA_ABACABA_ABACABA_ABACABA_ABACABA
2*E ABACABAEABACABA_ABACABAEABACABA_ABACABA
2*F ABACABAEABACABAFABACABAEABACABAFABACABA

关于algorithm - 元素混合算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com