集合划分问题
´问题描述:
n 个元素的集合{1,2, , n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2 ,3,4}可以划分为15 不同的非空子集如下:
{{1},{2} ,{3},{4}},
{{1,2} ,{3},{4}} ,
{{1,3},{2} ,{4}} ,
{{1,4} ,{2} ,{3}} ,
{{2,3},{1},{4}} ,
其中,集合{{1,2 ,3,4}}由 1 个子集组成;集合{{1,2} ,{3,4}},{{1,3},{2,4}},{{1,4} ,{2,3}},{{1,2,3},{4}},{{1,2,4} ,{3}},{{1,3,4} ,{2}},{{2,
3,4} ,{1}}由2 子集组成;集合{{1,2},{3},{4}},{{1,3},{2} ,{4}},{{1,4},{2} ,{3}},{{2,3},{1},{4}},{{2,4} ,{1},{3}},{{3,4},{1},{2}}由3子集组成;集合{{1},{2} ,{3},{4}}由4 子集组成。
´编程任务:
给定正整数n 和m,计算出n元素的集合{1,2, , n }可以划分为多少 不同的由m非空子集组成的集合。
´数据输入:
提供输入数据。文件的第1 行是元素个数n 和非空子集数m。
结果输出:输出非空子集的个数m
输入 5
输出 52
本题是求Bell数问题,代码如下:
#include<iostream>
using namespace std;
unsigned __int64 c(int n,int m)
{
if(m>n/2) m=n-m;
int i;
unsigned __int64 a=1,b=1;
for(i=n;i>n-m;i--)
a*=i;
for(i=2;i<=m;i++)
b*=i;
return a/b;
}
unsigned __int64 bell(int n)
{
unsigned __int64 t=0;
int i;
if(n==0) return 1;
else
{
for(i=0;i<=n-1;i++)
t+=c(n-1,i)*bell(i);
}
return t;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
printf("%I64u/n",bell(n));
return 0;
}
分享到:
相关推荐
实现2-7集合划分问题.cpp
集合划分问题的cpp解决! 使用的递归算法!
算法(c++)—— 集合划分问题
集合划分问题的java精简源代码,含有算法思想。只需在工程下创建BELL0.IN文件读入数据。
一个简单的集合划分算法,而且实现效率较高,欢迎下载,本人菜鸟,多多指教
集合 X 的划分是 X 的非空子集的集合,使得所有 X 的元素 x 都精确在这些子集的其中一个内。 等价的说,X 的子集的集合 P ... 本文件利用matlab解决了该集合划分问题,通过对集合内的元素个数的设置获取不同集合个数。
C#,动态规划的集合划分问题(DP Partition problem)算法与源代码 1 动态规划问题中的划分问题 动态规划问题中的划分问题是确定一个给定的集是否可以划分为两个子集,使得两个子集中的元素之和相同。 动态规划...
参考独立分量分析(ICA with Reference,ICA-R)充分利用先验知识或参考信号,取得了很好的分离效果,但其中的阈值参数很难选取,且计算量很大。理论分析和实验表明,若阈值选取不当,算法甚至不收敛。...
集合划分问题的粒子群优化算法.pdf
非常完美 ,它的时间空间复杂度很小,我上大二时编的
n个元素的集合{1,2,3,....n}可以划分位若干个非空子集,例如当n为4的时候,集合{1
在代码中包括一个使用深度学习来对集合进行划分的程序,他是一个解决NPhard问题的新的尝试。
实验目的:熟悉集合的划分概念,掌握求等价关系引发的商集、划分内容和计算方法。 实验内容:从键盘输入集合元素数n,用第二类stirling数求n个元素的集合上的全部划分
给定数组,在计算出所有不同划分个数的算法能够把其所有划分情况列出!Eclipse项目源码!
建立了集合划分问题的优化数学模型,结合遗传算法的思想提出的粒子群算法来解决集合划分问题。经过比较测试,6种粒子群算法的效果都比较好,特别交叉策略A和变异策略A的混合粒子群算法是最好的且简单有效的算法。
集合划分:包含n个元素的集合划分为正好k个非空子集的方法的数目
1. 问题描述:n个元素的集合{1,2,..., n }可以划分为若干个非空子集。例如,当n = 4 时,集合{1,2,3,4}可以划分为15 个不同的非空子集如下:{{1},{2},{3},{4}}, {{1,2},{3},{4}},{{1,3},{2},{4}}, {...
假设有个集合拥有m个元素,任意的从集合中取出n个元素,则这n个元素所形成的可能子集有那些?
算法设计与分析(java) 王晓东 完整版下载