【发布时间】:2021-04-20 23:21:59
【问题描述】:
假设我们有 N 个球和 M 个箱子可以放入它们。可以使用“星条”方法Integer Equations - Stars and Bars 找到此结果的数量。我们还可以使用itertools 包计算所有实际结果,并使用sympy.utilities.iterables.multiset_permutations 获得独特的结果。
如果我们将 bin 大小限制为 [0, N] 上的某个任意数字,您如何有效地计算所有可能的结果?有没有比在没有 bin 大小的情况下计算所有结果然后消除无效结果更好的方法?
对于 N = 2 和 M = 3,结果为 {200, 110, 020, 011, 101, 002}。
例如,如果 N = 3 和 M = 3,则结果为 {300, 210, 120, 021, 012, 030, 201, 102, 003, 111}。但是,如果我们想要一些数组 b=[3,3,0] 指定最大 bin 大小以便唯一有效的结果是 {300, 210, 120, 030}?
【问题讨论】:
-
我想这可能就是你要找的东西:stackoverflow.com/a/28969798/10306224
标签: python permutation itertools combinatorics