C实现计算集合的划分种数
c语言吧
全部回复
仅看楼主
level 5
hacker614 楼主
//VC++下编译通过,限于int64型范围,最多可计算到集合元素个数为26种
#include<stdio.h>
#include<math.h>
_int64 f(_int64 n,_int64 k)
{
_int64 sum=0,m;
if(k==1)
return 1;
else if(n==k) return 1;
else if(k==2)
{
m=(int)pow(2,n-1)-1;
return m;
}
else
{
sum+=f(n-1,k-1)+k*f(n-1,k);
return sum;
}
}
int main()
{
_int64 n,i,sum;
while(1)
{
sum=0;
    printf("请输入集合元素的个数:");
    scanf("%I64d",&n);
for(i=1;i<=n;i++)
sum+=f(n,i);
printf("共有划分种数为%I64d\n",sum);
}
return 0;
}
2009年08月06日 09点08分 1
1