描述:f(n,k)代表n个数排列,且有k个升序数的排列数。
题 意:
思 路:
学习点:
具体数学:Eulerian Number
例如: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
源代码: