1个元素的集合A={a}
划分:1个 就是A本身
2个元素的集合A={a,b}的划分
划分成一大块 A
划分成2小块:{{a},{b}}
共计两种
3个元素共计5种
参考屈婉玲《离散数学》p134页
4个元素的集合{a,b,c,d}
4,这么划分有1种. 是{a,b,c,d}
1,3,这么划分有4种. 分别是{<a>,<b,c,d>}、{<b>,<a,c,d>}、{<c>,<a,b,d>}、{<d>,<a,b,c>}
2,2,这么划分有3种. 分别是{<a,b>,<c,d>}、{<a,c>,<b,d>}、{<a,d>,<b,c>}
1,1,2,这么划分有6种. 分别是{<a>,<b>,<c,d>}、{<a>,<c>,<b,d>}、{<a>,<d>,<b,c>}、{<b>,<c>,<a,d>}、{<b>,<d>,<a,c>}、{<c>,<d>,<a,b>}
1,1,1,1,这么划分有1种. 是{<a>,<b>,<c>,<d>}
以上一共有15种.
那么n个元素的划分:
递归算法:
//n个元素有多少个划分
int F(int n,int m){
if(m==1)
return 1;
if(m==n)
return 1;
else{
return F(n-1,m-1)+m*F(n-1,m);
}
}
int main(){
int sum=0;
int n=5;
for(int i=1;i<=n;i++)
sum+=F(n,i);
printf("%d\n",sum);
}
参考资料:https://wenku.baidu.com/view/c726a2f09ec3d5bbfd0a745c.html