Advertisement

集合划分

阅读量:

设集合S包含n个元素,表示为S=⟨a1,a2,……,an⟩,现将其划分为k个满足以下条件的子集S1,S2,……,Sk,并且满足如下要求:

1.每个子集Si均非空
2.任意两个不同的子集Si与Sj之间不存在交集(其中1≤i,j≤k且i≠j)
3.所有子集的并集等于原集合S

上述划分方式被称为集合S的一个划分。这相当于将集合S中所含的n个元素a1,a2,……,an分配到k个(0<k≤n<30)无标识的容器中,并确保每个容器内至少包含一个元素。请计算将n个元素a1,a2,……,an分配至k个无标识容器中的划分数目S(n,k)。

输入

提供n与k的数值。

小标题

将n个元素a1,a2,……,an分配至k个未标记的容器中的分组方式数目记为S(n,k)。

输入样例解析

10 6

输出样例

22827

代码:

复制代码
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    long long s(int n , int k)
    {
    if((n <

全部评论 (0)

还没有任何评论哟~