如何生成将球分配到箱中的所有组合,包括空分配和完整分配?

zdm

看来这是一个已知的问题,但我找不到。我有m球和n垃圾桶。我想生成将球放入箱中的所有可能组合,包括完整和空的分配,即,一个箱可能是空的或可能包含所有球(请参见下面的示例)。

例如,对于m=n=2,我发现:

1    x    bin 1 contains ball 1, bin 2 contains nothing.
x    1    bin 1 contains nothing, bin 2 contains ball 1.
2    x    bin 1 contains ball 2, bin 2 contains nothing.
x    2    bin 1 contains nothing, bin 2 contains ball 2.
1,2  x    bin 1 contains balls 1 and 2, bin 2 contains nothing.
x    1,2  bin 1 contains nothing, bin 2 contains balls 1 and 2.
1    2    bin 1 contains ball 1, bin 2 contains ball 2.
2    1    bin 1 contains ball 2, bin 2 contains ball 1.
x    x    bin 1 contains nothing, bin 2 contains nothing.

如何在Python中生成这些组合(例如)?您可以提供伪代码或所需的任何编程语言。

我首先生成所有组合,例如

x
1
2
1,2

然后我想将这些组合分配到垃圾箱,但我无法完成。

chrisckwong821

对于将m个球放入n个仓中,有n ^ m个组合。但是当您接受不向m-1个球放球时,您的问题的答案是m ^ 0 + mC1 * n ^ 1 + mC2 * n ^ 2 + ...的总和。mCm * n ^ m

例如。将3个球放入3个箱中,总数为1 + 3 * 3 + 3 * 9 + 1 * 27 = 64

Python解决方案。

import itertools
#let bins be 'ABC', but u can have your own assignment
bins = 'ABC'
balls = '123'
tmp = []
for no_ball_used in range(len(balls)+1):
    bin_occupied = [''.join(list(i)) for i in itertools.product(bins,repeat=no_ball_used)]
    ball_used = [''.join(list(i)) for i in itertools.combinations(balls,no_ball_used)]
    solution = [i for i in itertools.product(ball_used,bin_occupied)]
    tmp.append(solution)

tmp是完整列表,其中第一部分是使用球,第二部分是使用箱。

print(tmp)
[[('', '')], [('1', 'A'), ('1', 'B'), ('1', 'C'), ('2', 'A'), ('2', 'B'), ('2', 'C'), ('3', 'A'), ('3', 'B'), ('3', 'C')], [('12', 'AA'), ('12', 'AB'), ('12', 'AC'), ('12', 'BA'), ('12', 'BB'), ('12', 'BC'), ('12', 'CA'), ('12', 'CB'), ('12', 'CC'), ('13', 'AA'), ('13', 'AB'), ('13', 'AC'), ('13', 'BA'), ('13', 'BB'), ('13', 'BC'), ('13', 'CA'), ('13', 'CB'), ('13', 'CC'), ('23', 'AA'), ('23', 'AB'), ('23', 'AC'), ('23', 'BA'), ('23', 'BB'), ('23', 'BC'), ('23', 'CA'), ('23', 'CB'), ('23', 'CC')], [('123', 'AAA'), ('123', 'AAB'), ('123', 'AAC'), ('123', 'ABA'), ('123', 'ABB'), ('123', 'ABC'), ('123', 'ACA'), ('123', 'ACB'), ('123', 'ACC'), ('123', 'BAA'), ('123', 'BAB'), ('123', 'BAC'), ('123', 'BBA'), ('123', 'BBB'), ('123', 'BBC'), ('123', 'BCA'), ('123', 'BCB'), ('123', 'BCC'), ('123', 'CAA'), ('123', 'CAB'), ('123', 'CAC'), ('123', 'CBA'), ('123', 'CBB'), ('123', 'CBC'), ('123', 'CCA'), ('123', 'CCB'), ('123', 'CCC')]]

tmp [0] = 0个球的组合

tmp [1] = 1个球的组合

tmp [2] = 2个球的组合

tmp [3] = 3个球的组合

您可以使用以下命令解压缩tmp

[item for sublist in tmp for item in sublist]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

排列和不排列组合将k个球分配到n个不同容量的容器中

来自分类Dev

将n个相同的球分配到组中以使每个组至少有k个球的方式有几种?

来自分类Dev

如何将数据从输入文件分配到哈希中

来自分类Dev

将方法随机分配到输入中

来自分类Dev

如何划分范围并将其分配给多个线程以生成所有组合

来自分类Dev

PHP - 将团队均匀地分配到数组中,这样组合就不会重复

来自分类Dev

使用assign()函数将列名称分配到R中的空数据框中

来自分类Dev

我是否应该将所有计算机科学作业分配到GitHub?

来自分类Dev

malloc函数将所有数据分配到相同的内存地址

来自分类Dev

找到所有可能的分配组合

来自分类Dev

如何使用 Django-Rest-Framework 将现有对象分配到多对一关系中?

来自分类Dev

将受试者随机分配到大小相等的组中,并查看所有可能的结果

来自分类Dev

将人随机分配到不同的大小组和类别

来自分类Dev

创建时间箱并将数据分配到正确的箱

来自分类Dev

将路径文件分配到VBA中的变量中

来自分类Dev

如何将数据分配到工作节点

来自分类Dev

如何将find的输出分配到数组

来自分类Dev

如何将书籍划分/分配到盒子

来自分类Dev

将属性路由值分配到Model / FromBody参数中

来自分类Dev

将值均匀分配到容器中的算法?

来自分类Dev

将多个作业分配到python字典中

来自分类Dev

根据MATLAB中的多个索引将数据分配到矩阵

来自分类Dev

将.txt文件的特定内容分配到bash变量中

来自分类Dev

将身份块分配到更大的矩阵中

来自分类Dev

将数量分配到桶中 - 不均匀

来自分类Dev

将秒数上的值分配到新列中

来自分类Dev

OpenCL-如何有效地将工作项分配到不同的设备

来自分类Dev

如何将内容分配到带有边框的列?(wordpress)

来自分类Dev

如何将结果列表分配到Android中的TableLayout行中?

Related 相关文章

  1. 1

    排列和不排列组合将k个球分配到n个不同容量的容器中

  2. 2

    将n个相同的球分配到组中以使每个组至少有k个球的方式有几种?

  3. 3

    如何将数据从输入文件分配到哈希中

  4. 4

    将方法随机分配到输入中

  5. 5

    如何划分范围并将其分配给多个线程以生成所有组合

  6. 6

    PHP - 将团队均匀地分配到数组中,这样组合就不会重复

  7. 7

    使用assign()函数将列名称分配到R中的空数据框中

  8. 8

    我是否应该将所有计算机科学作业分配到GitHub?

  9. 9

    malloc函数将所有数据分配到相同的内存地址

  10. 10

    找到所有可能的分配组合

  11. 11

    如何使用 Django-Rest-Framework 将现有对象分配到多对一关系中?

  12. 12

    将受试者随机分配到大小相等的组中,并查看所有可能的结果

  13. 13

    将人随机分配到不同的大小组和类别

  14. 14

    创建时间箱并将数据分配到正确的箱

  15. 15

    将路径文件分配到VBA中的变量中

  16. 16

    如何将数据分配到工作节点

  17. 17

    如何将find的输出分配到数组

  18. 18

    如何将书籍划分/分配到盒子

  19. 19

    将属性路由值分配到Model / FromBody参数中

  20. 20

    将值均匀分配到容器中的算法?

  21. 21

    将多个作业分配到python字典中

  22. 22

    根据MATLAB中的多个索引将数据分配到矩阵

  23. 23

    将.txt文件的特定内容分配到bash变量中

  24. 24

    将身份块分配到更大的矩阵中

  25. 25

    将数量分配到桶中 - 不均匀

  26. 26

    将秒数上的值分配到新列中

  27. 27

    OpenCL-如何有效地将工作项分配到不同的设备

  28. 28

    如何将内容分配到带有边框的列?(wordpress)

  29. 29

    如何将结果列表分配到Android中的TableLayout行中?

热门标签

归档