本文主要是介绍贝尔数列_集合的划分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
假设对含有n个元素的集合进行划分,则有多少种划分的方法?
这类题可以借助于贝尔数列的知识来进行解答。
贝尔数列的递推公式:
a[0]=1;
a[1]=1;
a[n]=C(n-1,i)*a[i] (i=0~n-1)。
#include<stdio.h>int C(int m,int n)
{int i,s1=1,s2=1;for(i=0;i<n;i++){s1*=(m-i);s2*=(i+1);}return s1/s2;
}int main()
{int a[11]={1,1};int i,j,n=3;for(i=2;i<11;i++)for(j=0;j<i;j++){a[i]+=a[j]*C(i-1,j);}while(~scanf("%d",&n)){printf("%d\n",a[n]);}return 0;
}
这篇关于贝尔数列_集合的划分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!