Algorithm 将n个球的所有可能分布枚举到k个框中
我指的正是这个问题,并且计算了这个问题的分布数。我对明确了解这些分布很感兴趣 例如,有5个球和3个盒子:一个分布是盒子1中的2个球,盒子2中的2个,盒子3中的1个,称为221。现在我想列出所有这些可能的发行版:- 212 131 104 。 . 一种方法是运行matlab命令:Algorithm 将n个球的所有可能分布枚举到k个框中,algorithm,matlab,combinations,permutation,combinatorics,Algorithm,Matlab,Combinations,Permutation,Combinatorics,我指的正是这个问题,并且计算了这个问题的分布数。我对明确了解这些分布很感兴趣 例如,有5个球和3个盒子:一个分布是盒子1中的2个球,盒子2中的2个,盒子3中的1个,称为221。现在我想列出所有这些可能的发行版:- 212 131 104 。 . 一种方法是运行matlab命令:perms([0,0,0,0,0,1,1])。这基本上会生成5个球和2个杆的所有排列。但是,由于命令perms无法识别相同的对象,因此存在大量的过度计数。您可以使用来清除perms()生成的相同行。: 您可以使用删除由p
perms([0,0,0,0,0,1,1])
。这基本上会生成5个球和2个杆的所有排列。但是,由于命令perms
无法识别相同的对象,因此存在大量的过度计数。您可以使用来清除perms()生成的相同行。
:
您可以使用删除由perms()生成的相同行。
:
很简单。。。有点
function alloc(balls, boxes):
if boxes = 1
return [balls]
else
for n in range 0:balls
return alloc(balls-n, boxes-1)
这是基本的递归逻辑:选择每个可能的球数,然后在剩余的球上重复,少一个盒子
列表粘合方法将取决于语言;我把它们留给学生做练习。非常简单。。。有点
function alloc(balls, boxes):
if boxes = 1
return [balls]
else
for n in range 0:balls
return alloc(balls-n, boxes-1)
这是基本的递归逻辑:选择每个可能的球数,然后在剩余的球上重复,少一个盒子
列表粘合方法将取决于语言;我把它们留给学生做练习