stirling数

王朝百科·作者佚名  2010-03-01  
宽屏版  字体: |||超大  

将n个有区别的球的球放入k个无标号的盒子中( n>=k>=1,且盒子不允许为空)的方案数就是stirling数.(即含 n 个元素的集合划分为 k 个集合的情况数)

递推公式:

S(n,0) = 0

S(n,1) = 1 (k = 1)

S(n,n) = 1

S(n,k) = 0 (k > n)

S(n,k) = S(n-1,k-1)+k*S(n-1,k) (n >= k >= 2)

分析:设有n个不同的球,分别用b1,b2,...,bn表示。从中取出一个球bn,bn的放法有以下两种:

1.bn独占一个盒子,那么剩下的球只能放在k-1个盒子里,方案数为S(n-1,k-1);

2.bn与别的球共占一个盒子,那么可以将b1,b2,...,bn-1这n-1个球放入k个盒子里,然后将bn放入其中一个盒子中,方案数为k*S(n-1,k).

附程序:

program stirling;

var f:array[0..10000,0..10000] of longint;

n,m,i,j:longint;

begin

readln(n,m);

for i:=1 to n do

begin

f[i,0]:=0;

f[i,1]:=1;

f[i,i]:=1;

for j:=i+1 to n do f[i,j]:=0;

end;

for i:=2 to n do

begin

for j:=2 to m do

f[i,j]:=j*f[i-1,j]+f[i-1,j-1];

end;

writeln(f[n,m]);

end.

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有