hdu3664 Permutation Counting (具体数学Eulerian Number)

题   意:

思   路:

学习点:

    具体数学:Eulerian Number

 

描述:f(n,k)代表n个数排列,且有k个升序数的排列数。

例如:f(4,2):1324 ,1423 ,2314 ,2413 ,3412 ,1243 ,1342 ,2341 ,2134, 3124,  4123。

有递推公式:

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

分析:不含n的排列:,当在该排列升序或该排列开始的位置插入n,那么升序数不变;如果在降序或最后位置插入n,那么升序数加1。

那么有当f(n-1,k)时,共有k个升序位置加上开始位置共k+1个位置可插入n,使得升序数k不变;当f(n-1,k-1)时,共有n-k-1个降序位置,加上一个结尾位置共n-k个位置可插入n,使得k-1个升序数变为k个。

参考资料:《具体数学》

      维基百科:http://en.wikipedia.org/wiki/Eulerian_number

源代码:

 

posted @ 2011-05-08 14:11  nepaul  阅读(781)  评论(0)    收藏  举报