- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(算法试卷答案ypf
优先选择顺序:要优先选择分治算法,回溯算法,贪心算法,动态规划算法和分支限界算法一、给定一个含有n个元素的集合,且存放在一维数组A[1…n]中,试利用分治算法设计算法,找出集合中前k个最小的元素,且结果存放在A[1….k]中。要求:给定任意的k(1=k=n),最好的时间复杂度为O(n).假设:1)集合中没有重复的元素 2)k不是常量,而是通过参数带入的参数 3)前k个最小元素不需要排序思路分析:分治法的基本思想?:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。利用快速排序的分治基本思想?:设当前待数组的无序区为R[low..high],需要查找前k个小的元素,数组长度为n.利用分治法可将问题的基本思想描述为:(1) 分解?在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1]和R[pivotpos+1..high],并使 左边子区间中所有记录的关键字均=基准记录的关键字pivot.key,右边的子区间中所有记录的关键字均=pivot.key,而基准记录pivot则位于正确的位置(pivotpos)上,它无须参加后续的排序。如果当前的基准位置恰好等于K,则无需进行第二步的快速排序,直接返回结果即可.(2) 求解?通过递归调用快速排序,如果当前的基准小于K则在K到high之间继续进行一次快速排序,找到K所在的位置,如果大于K,则在low-k之间继续进行一次快速排序,找打K所在的位置. (3) 组合?因为当“求解”步骤中的两个递归调用结束时,其左、右两个子区间已有序。对快速排序而言,“组合”步骤无须做什么,可看做是空操作。//分治思想中的快速排序程序代码?利用分治策略,在n个不同元素中找出第k个最小元素?代码如下:?#include?stdio.h?//一次快速排序?int?partition(int?s[],?int?low,?int?high)?{???if?(low?high?)??return?0;??????if(low==high)??return?low;??????s[0]=s[low];??????while?(low??high)????{??while?(low??high??s[high]?s[0])?high--;?if?(low??high)?s[low++]?=?s[high];?while?(low??high??s[low]?s[0])?low++;???if?(low??high)?s[high--]?=?s[low];?}??s[low]?=?s[0];????????return?low;?}??//分治找K-th?Numberint?Select(int?s[],?int?low,?int?high,?int?k){?//得到中间数的下标??int?i?=?partition(s,?low,?high);??????//j为左区间长度?int?j?=?i?-?low?+?1;?//位置大就在左区间找,否则就在右区间找?if?(j?==?k)????return?s[i];else?if?(kj)?return?Select(s,?low,?i,?k);??else?return?Select(s,?i+1,?high,?k-j);??}int?main(){???int?n;?int?low,?high,?k;int?a[20];??printf(请输入数目\n);scanf(%d,n);printf(请输入数据:\n);???for?(int?i?=?1;?i?=?n;?i++)??scanf(%d,a[i]);???printf(\n);?printf(请输入第几个最小值:\n);scanf(%d,k);???printf(第%d个最小的数为:%d\n,k,Select(a,?1,?n,?k));???}二、动态规划算法在一个由n个数字组成的数字串中插入r个乘号(1=rn16),使它分成r+1个整数,找出一种乘号的插入方法,使得这r+1个整数的乘积最大,试用动态规划算法解决此问题,并分析算法的时间复杂度。算法分析:建立递推关系?设f(i,k)表示在前i位数中插入k个乘号所得乘积的最大值,a(i,j)表示从第i个数字到第j个数字所组成的j-i+1(i=j)位整数值。为了寻求递推关系,先看一个实例:对给定的847313926,如何插入r=5个乘号,使其乘积最大?我们的目标是为了求取最优值f(9,5)。?①设前8个数字中已插入4个乘号,则最大乘积为f(8,4)*6; ②设前7个数字中已插入4个乘号,则最大乘积为f(7,4)*26; ③
您可能关注的文档
- (厦门大学网教民法学上作业参考答案.doc
- (化工文献.doc
- (化工月度工作总结.doc
- (算法与数据结构课程设计指导2011秋信息.doc
- (化工热力学08复习.doc
- (化工热力学作业1.docx
- (化工热力学名词解释.docx
- (化工热力学复习.doc
- (化工翻译.doc
- (化工英语.doc
- IT新语2025第29期:数据编织——织就数据互联新网络,构建全要素融合与智能应用的数字强纽带.docx
- 援助终结了吗?国际发展合作转型与中国角色.docx
- Allianz Research -2025-26年全球经济展望挑战重力 Gobal Economic Outlook 2025-26 Defying gravity.docx
- 营销策划- 麦当劳战略爆品开发:巨无霸 美国每年售出5.5亿个巨无霸.docx
- 校优秀学生申请书1500.docx
- 电信工程系职业生涯规划书范文大全.docx
- 经济工作与国家战略的关系论文.docx
- 中国茶文化论文1500字.docx
- 大一国防教育论文2000字.docx
- 读书班心得体会1000字.docx
最近下载
- 第四版国际压力性损伤溃疡预防和治疗临床指南解读PPT课件.pptx VIP
- 低空经济数字孪生平台建设方案.ppt VIP
- RockwellAutomation罗克韦尔搭载 TotalFORCE 控制技术的 PowerFlex 变频器用户手册说明书.pdf
- 安科瑞AMC国网中文电力仪表说明书V1.1-中文-20211025.pdf VIP
- (精)必威体育精装版个人租房合同免费下载.docx VIP
- 小学语文阅读理解万能答题公式模版 .pdf VIP
- 大班健康蔬菜沙拉PPT课件.pptx VIP
- 阅读理解答题万能公式【小学语文阅读理解答题万能公式(简单实用)】.doc VIP
- 《是谁爱着你的背影》散文阅读练习及答案(2017年柳州市中考题).doc VIP
- MPX_维保手册_簡体字(1)(1).pdf VIP
有哪些信誉好的足球投注网站
文档评论(0)