n个人排名,允许并列名次,共有多少种排名结果? |
您所在的位置:网站首页 › 万能四码有几种 › n个人排名,允许并列名次,共有多少种排名结果? |
这道题如果编程计算,用动态规划最方便,可以直接递推也可以利用已有的结论;而在组合数学中,应用 母函数则可以得到漂亮简洁的结论。 一、直接动态规划 我们用dp[i][j]表示有j个人,i种名次。那么显然有如下关系成立: dp[i][i]=i! dp[1][j]=1 dp[i][j]=i*dp[i][j-1]+i*dp[i-1][j-1](j>i>1) 第一条是没有并列的情况,直接全排列; 第二条是全部并列,显然只有1种; 第三条是状态转移方程:当j-1个人排完名次之后加入一个人,有两种情况: 他和某一个或几个人并列,这种情况下之前就已经有i个排名了,他可能和这i种中的任何一种并列;他有一个新的名词,这种情况相当于他在i个空档中选择一个,有i种可能。而答案就是dp[i][j]对i求和。写个程序算一下前几项: #include #define A 15 typedef long long LL; LL dp[A][A],ans[A],fact[A]; void fac() { for(int i = 1;i从图像看对数曲线近似呈直线,但斜率缓慢增加,经查阅资料,n很大时有 a(n)\approx \frac{n!}{2(ln2)^{n+1}} 由上式容易知道 \lim_{n \rightarrow \infty}{\frac{na(n-1)}{a(n)} }=ln2 更多内容请参阅该oeis词条和 Weak ordering,本人英语水平太差,就不翻译了。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |