欢迎来到天天文库
浏览记录
ID:62527237
大小:34.08 KB
页数:3页
时间:2021-05-12
《实验五指定子集个数的集合划分.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、指定子集个数的集合划分课程名称:算法分析与设计指定子集个数的集合划分曾会蜜1409J叶苗实验名称实验地点指导教师学号日期同组成员30907171162011年10月独立完成系别班级实验时数成绩信科院计本09-11实验目的及要求?明确递归和递推的基本概念?用递归和递推解决指定子集个数的集合划分问题?通过本例掌握递归和递推的程序设计方法实验环境及相关情况(包括使用的软件、实验设备)?工具软件:MicrosoftvisualC++6.0?硬件:主板,鼠标,键盘,显示器,U盘?操作系统:Windows7实验内容及步骤(包括简要的实验步骤流程)1.2.n-1根据题目确定思路,划分集合,可以找
2、出其中的逻辑关系•根据逻辑关系,运用递归的算法来求,划分为两种情况对于一种情况,等价于把前素分成m份,然后把n号元素放入这m个集合中的一个(也就是说有那麽总数就是F(n,m)=F(n-1,m-1)+m*F(n-1,m)3.根据分析建立递推方程个元素分成m-1份,然后n号元素单独放。对于第二种情况,等价于把前n-1个元m种放法)实验结果(拷贝屏幕,加上必要的文字说明)110316312725S5112599301弘E30259330003110&S170177703413^15140(>951425251212&4fc22827014&25SS00000000000000014500
3、000003011
4、Wk巧,总共个数为=
5、Pr-essanykeytoconti.nue1四•源代码1.#includevoidmain(){intn,k,s[11][11];inti,j;printf("输入集合的个数");scanf("%d",&n);printf(”输入子集的个数");scanf("%d",&k);for(i=1;i<=10;i++)for(j=1;j<=10;j++)s[i][j]=0;for(i=1;i<=10;i++)s[i][i]=1;for(i=1;i<=10;i++)s[i][1]=1;for(i=2;i<=10;i++)for(
6、j=2;j<=10;j++)s[i][j]=j*s[i-1][j]+s[i-1][j-1];for(i=1;i<=10;i++){for(j=1;j<=10;j++)printf("%6d",s[i][j]);printf("");}printf("n=%d,k=%d,总共个数为:%d",n,k,s[n][k]);}2.#includeintrecursion(inta,intb);voidmain(){inta,b,c;printf("输入集合个数”);scanf("%d",&a);printf("输入子集个数");scanf("%d",&b);c=re
7、cursion(a,b);printf("划分的总个数为%d",c);}intrecursion(inta,intb){intc=0;if(a==b){return1;}if(a==O
8、
9、b==O
10、
11、a
此文档下载收益归作者所有