递归与分治策略考题答案

递归与分治策略考题答案

ID:44162450

大小:112.75 KB

页数:7页

时间:2019-10-19

递归与分治策略考题答案_第1页
递归与分治策略考题答案_第2页
递归与分治策略考题答案_第3页
递归与分治策略考题答案_第4页
递归与分治策略考题答案_第5页
资源描述:

《递归与分治策略考题答案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第一题:1、请写一个排列组合的算法:存在N个数组,输出在每个数组取一个元素的排列组合结果。假设:数组A=[X,Y,Z],数组B=[l,2]组合的结果:X1,X2,Y1,Y2,Z1,Z2排列的结果:X1,X2,Y1,Y2,Z1,Z2,1X,1Y,1Z,2X,2Y,2Z要求程序对以适应N为任意数和每个数组长度不同的情况(假设内存足够大,程序町以不考虑效率)。自input-记事本文件(F)槁式(O)232XYZ12output-汜事本图3输入数据图1输入数据仝件戸Oi(E)格式(»童看(V)帮助(H)

2、{

3、X1,X2,Yl,Y2/zifZ2}{IX,XI,2X,X2,1Y,Yl,2Y,Y2,1Z,Zl,2Z,Z2}图2输出数据第一行的“2”表示共有两个数组,第二行的“3”表示第一个数纟H有三个元素,第三行的“2”表示第二个数组有两个元素。“X、Y、Z”表示第一个数组的三个元素,“1、2”表示第二个数组的两个元素。Joutput・记事本po回l—U]文件(F)精(E)梧式(0)』看M帮助(H)I{XI#,Xl$,X2#,X2$,Y1也Yl$,Y2也Y2$,Zl#,Zl$,Z2#,Z2$}{#1X,1#X

4、,IX#,$1X,1$X,1X$,#X1,X#l,XI#,$X1,X$1,XI$,#2X,2#X,2X#,$2X,2$X,2X$,#X2,X#2,X2#,$X2,X$2,X2$,#1Y,1#Y,1Y#,$1Y,1$Y,1Y$,#Y1,Y#l,Yl#,$Y1,Y$1,Yl$,#2Y,2#Y,2Y#,$2Y,2$Y,2Y$,#Y2,Y#2SY2#,$Y2,Y$2,Y2$,#1Z,1#Z,1Z#,$1Z,1$Z,1Z$,#Z1,Z#l,Zl#,$Z1,Z$1,Zl$,#2Z,2#Z,2Z#,$2Z,2$Z

5、,2Z$,#Z2SZ#2SZ2#,$Z2,Z$2,Z2$}图4输出数据解法:使用算法设计技术中的“减治法”,因为当N=2的情况是最简单的情况,当N>2时可以先求前N・1个数组的组介和排列结果,然后再将前一阶段的结果和第N个数组组介和排列。最终得到问题的解。在具体实现上建议使用递归技术,因为递归法是最容易理解的一种实现方法。另外,求排列方法的“最简单的情况”部分需要点特姝处理,因为每一种组合都对应多种排列情况。代码:#include#include#includ

6、e^include〈string.h>^includeusingncimespacestd;〃定义集合类classMyCollection{public:〃构造函数MyCollection(){)//获取集合屮的元素个数intsize(){returnelements・size();)//获取集合屮某个元素stringget(inti){if(i<(int)elemonts・sizeO)returnelements・at(i);elsereturnNULL;//向集

7、合"1添加一个元素voidadd(strings){elements.pushback(s);)//删除集合屮某个元素,若成功则返回true否则返回falseboolremove(inti){if(i<(inl)clements・sizeO){vector::iteratorit=elements・begin();intindex=0;while(index

8、)//将该集合打印到标准输出流voidprint(){if(elements・size()二二0)cout«,/{}"<

9、filename.c_str(),ios::app);if(elements・size()==0)outobj<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。