- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学生学号0121510880508实验课成绩学 生 实 验 报 告 书实验课程名称算法设计与分析B实验开课学院计算机科学与技术学院指导教师姓名学生姓名丁小兵学生专业班级软件学-2016学年第2学期实验项目名称分治法的应用报告成绩实验者丁小兵专业班级软件学术1502组别同组者完成日期 2017年5月10日第一部分:实验分析与设计(可加页)一、实验目的和要求1.目的基本掌握分治算法的原理。掌握递归算法及递归程序的设计。能用程序设计语言求解相关问题。2.要求用分治法求解问题;分析算法的时间性能,设计实验程序验证分析结论。二、分析与设计1.了解用分治法求解的问题:当要求解一个输入规模为n,且n的取值相当大的问题时,如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1k≤n,而且子问题与原问题性质相同,原问题的解可由这些子问题的解合并得出。那末,对于这类问题分治法是十分有效的。2.掌握分治法的一般控制流程。DanC(p,q)global n,A[1:n]; integer m,p,q; // 1pqn if Small(p,q) then return G(p,q);else m=Divide(p,q); // pmqreturn Combine(DanC(p,m),DanC(m+1,q));endifend DanC实验内容仔细阅读备选实验的题目,设计序要的程满足正确性,代码中有关键的注释,书写格式清晰,简洁易懂,效率较高,利用C++的模板,设计的程序通用性好,适合各种合理输入,并能对不合理输入做出正确的提示。中位数问题问题描述设X[0:n - 1]和Y[ 0 : n– 1 ]为两个数组,每个数组中含有n个已排好序的数。找出X和Y的2n个数的中位数。编程任务 利用分治策略试设计一个O (log n)时间的算法求出这2n个数的中位数。数据输入由文件input.txt提供输入数据。文件的第1行中有1个正整数n(n=200),表示每个数组有n个数。接下来的两行分别是X,Y数组的元素。结果输出程序运行结束时,将计算出的中位数输出到文件output.txt中。输入文件示例输出文件示例input.txtoutput.txt35 15 183 14 2114三、主要仪器设备及耗材1. 安装了Windows10 操作系统的PC机1台2.PC 机系统上安装了MicrosoftVisualStudio2013 开发环境第二部分:实验过程和结果(可加页)四、代码调试说明(调试手段、过程及结果分析)调试主要内容为编写程序的语法正确性与否,程序逻辑的正确性与否。F5:启动调试;F11:逐语句调试;F12:逐过程调试;F9: 切换断点;ctrl+B:新建断点等。代码:#includeiostream#includefstreamusingnamespace std;int midNum(inta[], intn) {if (n % 2 == 0) {return (a[n / 2] + a[n / 2 - 1]) / 2;}elsereturna[n / 2];}int max(inta, intb) {if (a = b) {returna;}else {returnb;}}int min(inta, intb) {if (a = b) {returna;}else {returnb;}}int getmidNum(inta[], intb[], intn) {int m1, m2;if (n = 0)return -1;if (n == 1)return (a[0] + b[0]) / 2;if (n == 2)return (max(a[0], b[0]) + min(a[1], b[1])) / 2;m1 = midNum(a, n);m2 = midNum(b, n);if (m1 == m2) {return m1;}if (m1m2) {if (n % 2 == 0) {return getmidNum(a + n / 2 - 1, b, n / 2 + 1);}else {return getmidNum(a + n / 2, b, n / 2 + 1);}}else {if (n % 2 == 0) {return getmidNum(b + n / 2 - 1, a, n / 2 + 1);}else {return getmidNum(b + n / 2, a, n / 2 + 1);}}}int main(){/*ofstream oo(file1.txt, ios::out);if (!oo){cout Error;system(pause);return 1;}oo 11;oo.cl
文档评论(0)