斯特林数。

第一类斯特林数

第一类斯特林数 s 1 s_1 s1(n,m)表示的是将n个不同的元素构成m个圆排列的数目。
考虑递推,可以将 s 1 s_1 s1(n,m)分为两种情况:

1.某一个元素单独构成一个圆,其它的n-1个元素构成m-1个圆,则这种情况下的数目为:n* s 1 s_1 s1(n-1,m-1)。
2.某一个元素和至少1个其它元素构成一个圆,将n-1个元素组成m个圆,再将剩下的一个元素放入任何一个圆里,则这种情况下的数目为:(n-1)* s 1 s_1 s1(n-1,m)

所以: s 1 ( n , m ) = n ∗ s 1 ( n − 1 , m − 1 ) + ( n − 1 ) ∗ s 1 ( n − 1 , m ) s_1(n,m)=n*s_1(n-1,m-1)+(n-1)*s_1(n-1,m) s1(n,m)=ns1(n1,m1)+(n1)s1(n1,m)
以上式子用递归或者循环可以得到答案。

第二类斯特林数

第二类斯特林数 s 2 ( n , m ) s_2(n,m) s2(n,m)表示的是将n个不同的元素划分为m个集合的数目。
同样考虑递推,可以分为两种情况:

1.将某一个元素单独放在一个集合中,其余的n-1个元素构成m-1个集合,即n-1个元素组成m-1个集合,这种情况的数目为: s 2 ( n − 1 , m − 1 ) s_2(n-1,m-1) s2(n1,m1)
2.将某一个元素和至少一个元素放在同一个集合里,可以看作是将其余n-1个元素划分为m个集合,然后将剩下的1个元素加入任意一个集合,这样的数目有: m ∗ s 2 ( n − 1 , m ) m*s_2(n-1,m) ms2(n1,m)种。

所以: s 2 ( n , m ) = s 2 ( n − 1 , m − 1 ) + m ∗ s 2 ( n − 1 , m ) s_2(n,m)=s_2(n-1,m-1)+m*s_2(n-1,m) s2(n,m)=s2(n1,m1)+ms2(n1,m)种。

猜你喜欢

转载自blog.csdn.net/p15008340649/article/details/119870231