我想列举N盒子里所有可能的球组合。在
示例:
我有8球要处理3个盒子:
box_1 box_2 box_3
case-1 8 0 0
case-2 0 8 0
case-3 0 0 8
case-4 7 1 0
case-5 7 0 1
case-6 6 2 0
...
我的第一个问题是我需要A循环来执行此操作,但我希望A和N作为用户的输入。那么,如何不编写用户可能需要的所有可能的循环数呢?在
a和N的值在2到~800之间,因此对计算时间要求很高。如何优化该算法?在
如果您用python语言回答我,我将不胜感激。
感谢所有的贡献!在
Tags:
请参见3.1中的itertools.combinations_with_replacement,以获取用python编写的示例。另一个常见的组合问题是组合变换中的组合问题。这样做的优点是不会生成丢弃的元组,比如基于乘积或置换的解决方案。下面是一个使用标准(n,r)术语的示例,在您的示例中应该是(A,n)。在
伪代码:
解释
从第一个盒子开始,如果没有盒子,抱怨并退出。 如果是最后一个要填充的盒子,放下所有剩余的球并显示结果。 如果有更多的盒子,首先添加0个球,然后对其他盒子重复这个过程。然后加一个,两个球,直到没有球了。在
为了证明算法的有效性,我给出了一个实数3球2盒的例子。在
我们有一个名为Box的盒子数组,每个盒子可以容纳任意数量的球(值)。打印框打印框的当前值。在
^{pr2}$另一个有3个盒子和3个球的例子:
从python2.6开始就可以很好地工作,(2.5-friendly implementation of ^{} is available as well ):
相关问题 更多 >
编程相关推荐