找到第一类斯特林数的变化

时间:2014-02-10 01:04:36

标签: algorithm dynamic-programming combinatorics

找到Stirling numbers of the first kind有一个着名的递归关系,即

C(n,k) = C(n-1,k-1)+(n-1)*C(n-1,k).

这是解决以下问题的方法:

  

给定一组N个不同的数字,该集合中存在多少个不同的排列,以确保从左到右最大值K

这不是很难,但以下几点变化:

  

给定N个数字的多个集合(不一定是不同的),该集合存在多少个不同的排列,以确保从左到右的最大值K

示例:

让多重集合为S = {1,2,2,3} [注意:两个2在置换时应被视为不相同]和K = 3。然后,以下排列:

<1 2 2 3>
<1 2 2 3>
<1 2 3 2>
<1 2 3 2>

满足所需条件。因此,答案应该是4(我们不需要找到所有的排列,但我们对这种排列的数量感兴趣)。

注意:当且仅当在其之前发生的所有元素严格小于它时,才应将元素视为最大值。例如,在上面的示例<1 2 2 3>中,第二个2不是最大值,而是第一个2。因此,这种安排满足K = 3(不是K = 4)。

PS:我已经工作了一整天来解决它,但是做不了什么好事。任何帮助都非常感谢。

0 个答案:

没有答案