- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计基础12_2_动态规划(2015春)讲解
int main() { int n, m, i, j; //m存放ai左边各终点 //最长上升子序列长度的最大值 scanf(“%d”,n); //输入序列长度n for(i=1; i=n; i++) scanf(“%d”,b[i]); //输入n个整数b[i] MaxLen[1]=1; //初始化以第一个数为 //终点的最长上升子序列长度1 for(i=2; i=n; i++) //求以ai为终点的 { m=0; //最长上升子序列长度 for(j=1; ji; j++) //循环找aj左边最长上 if(a[i] a[j]) //小于升子序列长度 if(mMaxLen[j]) m=MaxLen[j]; MaxLen[i]=m+1; } int nMax = -1; //初始化nMax //循环求以ak为终点的 //最长上升子序列最大长度 for(i=1; i=n; i++) if(nMax MaxLen[i]) nMax = MaxLen[i]; printf(“%d\n”,nMax); //输出最大长度 return 0; } * 方案二:动态规划DP的实现 nMax = Max{ MaxLen(i), i=1,2,3, … ,n } MaxLen (1) = 1 MaxLen (i) = Max { MaxLen (j):1j i 且 bj bi 且 i≠1 } + 1 特别提醒:教材p297 状态转移方程 —— 源程序 a —— 教材中数组 b k —— 教材中变量 i i —— 教材中变量 j 第12章 贪心法与动态规划 * 12.1.3贪心法解题的一般步骤 贪心法特点,就是在求最优解的过程中,每一步都采用一种局部最优策略,逐渐缩小问题范围和规模,最后把每一步结果合并起来得到一个全局的最优解。 在例12.1中,每次选取删除的数字都是第一个递减区间的首位数字,也就是当前的删除可以保证在当前删除位数要求下的最优解,同时使剩下的数字串逐渐接近最后要求的目标最优解。 * 在例12.2中,每一次选取的时间都是满足条件的最早结束事件,向问题的解答前进一步,同时给剩余事件的选取留下了最多的不重叠时间;最后得到的事件序列,就是每一次选取的事件集合。 在例12.3中,每一步都将覆盖最大间隔的线段断开,使得线段总长度减少,同时使线段数目更接近最大数目限制;最后得到的最小线段总长度,其实是计算过程唯一确定的一种线段覆盖方式得到的。 贪心法解题的一般步骤 从问题的某个初始解出发; 采用循环语句,当可以向求解目标前进一步时,根据局部最优策略,得到一个部分解,缩小问题的范围或规模; 将所有部分解综合起来,得到问题的最终解。 * 12.1 贪 心 法12.2 动 态 规 划 * 引例 递归的重叠子问题 斐波那契序列:f(1)=1; f(2)=1; f(n)=f(n-1)+f(n-2); (n2) * 递归实现 long long f(int n) { if(n==1||n==2) return 1; return f(n-1)+f(n-2); } f(6)=f(5)+f(4) =f(4)+f(3)+f(4) 动态规划DP实现 long long f(int n) { int i; long long a[100]; a[1]=1;a[2]=1; for(i=3; i=n;i++) a[i]=a[i-1]+a[i-2]; return a[n-1]; } n 40 90 递归:1.030s 无法忍受 动规:0.062s 0.359 特点: 空间换时间 不重复求解 引例 递归的重叠子问题 * 递归调用中,计算f(6)和f(5)都需要去计算f(4),导致对同一个值f(4)计算了两次,浪费了时间,我们把这种情况叫做递归的重叠子问题。 一种避免递归的重叠子问题的方法就是,当我们求出一个值的时候,就把它保存起来,当下次再用到这个值的时候,直接调用保存的值,而不是再计算一次。 递归算法的问题:子问题被重
您可能关注的文档
- 秦巴物流园概念性方案设计说明书讲解.doc
- 第1课 初识文字处理软件解析.ppt
- 移动技术标部分讲解.doc
- 春节复工安全交底重点.doc
- 移动焊轨车规章制度讲解.doc
- 第1课《认识新朋友》解析.ppt
- 昨夜星辰昨夜风重点.ppt
- 显微成像系统重点.doc
- 春随瑞雪至(鼓劲)重点.ppt
- 春季分销商会议净水课件 - 复件重点.ppt
- 2025届新高考生物热点冲刺复习DNA的结构与基因的概念.pptx
- 2025届新高考生物热点冲刺复习细胞的分子组成.pptx
- 细胞器之间的分工合作 高一上学期生物人教版必修1.pptx
- 探究培养液中酵母菌种群数量的动态变化高二上学期生物苏教版选择性必修2.pptx
- 第7课+近代殖民活动和人口的跨地域转移 高二下学期历史统编版(2019)选择性必修3.pptx
- 神经调节的结构基础+高二上学期生物人教版选择性必修1.pptx
- 第16课中国赋税制度的演变高二上学期历史统编版(2019)选择性必修1.pptx
- 细胞的能量“货币”ATP高一上学期生物人教版必修1.pptx
- 人类遗传病高一下学期生物人教版必修2.pptx
- 深挖财报之2024年中报分析:新视角,哪些细分领域值得关注?-240903-天风证券-23页.pdf
文档评论(0)