Algorithm 获取排序组合数的算法?

Algorithm 获取排序组合数的算法?,algorithm,combinations,sorted,Algorithm,Combinations,Sorted,假设有“n”个数字,我们从中选择“p”个数字(p小于n),以便对所选的“p”个数字进行排序。选定的数字可以重复。我们如何计算可以选择的组合的数量?例如,如果我们有一组数字,比如{1,2,3,4,5,6}(n=6),我们将从集合(p=3)中选择3个数字进行排序。所以我们可以有{1,2,3},{1,1,2},{2,3,6},{4,5,5},{5,5,5}。。。。。。。。由于所有这些组合都已排序,因此它们是有效的。我们如何找到所能得到的此类排序组合的数量 从单词sorted中我的意思是,当我们从一组

假设有“n”个数字,我们从中选择“p”个数字(p小于n),以便对所选的“p”个数字进行排序。选定的数字可以重复。我们如何计算可以选择的组合的数量?例如,如果我们有一组数字,比如{1,2,3,4,5,6}(n=6),我们将从集合(p=3)中选择3个数字进行排序。所以我们可以有{1,2,3},{1,1,2},{2,3,6},{4,5,5},{5,5,5}。。。。。。。。由于所有这些组合都已排序,因此它们是有效的。我们如何找到所能得到的此类排序组合的数量


从单词sorted中我的意思是,当我们从一组n元素中选择p元素时,所选p元素应该被排序

举个小例子:

如果集合是
{1,2,3,4}
(因此n=4),并且我们要选择3个元素(p=3),那么我们可以选择p个元素(替换)的方法的数量将是
4*4*4=64
。因此选择将有
{1,1,1},{1,1,2},{1,1,3}{1,1,4},{1,2,1}…..{3,1,1}…{4,4,4}
。但在这些选择中,并不是所有的都被排序。在此示例中,
{1,2,1}
{3,1,1}
未排序

我想获得已排序的选择数。

谢谢

您可以从一组
n
元素中选择替换的
k
元素的方法数与您可以从一组
n+k-1
元素中选择不替换的
k
元素的方法数相同。后一个值是二项式系数
n+k-1选择k
,其值为
(n+k-1)/(k!(n-1)!)

非正式示范:

假设我有n个蓝色的盒子。我把它们排成一行(这样就分类了),然后拿k个红球。我把红色的球放在这一行中我喜欢的任何地方,除了在最后,所以这一行必须仍然以一个蓝色的盒子结束。现在,我为每个红色的球选择下面的蓝色框。如果两个或多个红色小球并排排列,则它们都对应于同一个蓝色方框

因此,每一个红球和蓝盒的排列都对应于一些替换蓝盒的选择,而每一个蓝盒的选择都对应于一些红球和蓝盒的排列


我可以用多少种方式来排列红色的球和蓝色的盒子?我的行必须以一个蓝色方框结束,所以我把那个拿走,现在我可以用我选择的任何方式安排剩余的n-1个蓝色方框和k个红色小球。或者,换句话说,我可以选择k+n-1位置中的k,并在这些位置放置红球,用蓝色框填充其余位置。

我看不出排序如何影响结果。对于每个可能的重复组合,都会有相应的排序排列

因此,问题归结为一次取p的n个元素的组合的数量以及替换。这是直接的公式,(n-1+p)C(p)=阶乘(n-1+p)/(阶乘(p)*阶乘(n-1))

这是一个,和。

@BiGYaN的答案是正确的,但在获得这个结果的过程中缺乏幽默感(即使在提供的链接上),所以我决定添加这个-

不应采用集合的类比,因为定义集合不考虑顺序,而且包含唯一的项。

  • 如果我们拿n=6或[1,2,3,4,5,6]的例子,现在我们得到长度为3的序列,这样-


    模式=d1允许重复多少次?这与替换选择有何不同?排序与答案有什么关系?@TedHopp C(n,p)统计选择而不替换。OP要求选择替换项。@rici-是的,我意识到了这一点,并且已经改变了我的评论。
    [up up up up up d1 d2 d3]
    
    C(n-1 up's + k digits, n-1 up's) or C(n-1+k, n-1)