- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构与算法Java版罗文劼第8章扩展应用举例课件教学.ppt
馋死 PPT研究院 POWERPOINT ACADEMY * * 第*页 在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 第8章 扩展应用举例 * 1.教学内容 求最大子段和、表达式树的构造、由等价关系求划分 2.教学目的 理解穷举的思想,能够应用穷举思想设计算法以及进行算法分析的。理解分治策略的思想,以及分治与递归的关系;并能举出在数据结构课程中应用分治策略的算法。理解动态规划策略的思想,以及其求解过程与分治策略的不同之处。理解表达式与二叉树的对应关系;巩固对字符串、栈和二叉树存储和遍历知识的掌握。掌握用树表示集合的方法,理解其便利之处和存在的问题与解决思路。 3.教学重点 穷举法、分治策略和动态规划策略在算法设计中的应用。表达式与二叉树的对应关系。采用树结构表达集合的应用。 4.教学难点 动态规划的策略思想 * 8.1 求最大子段和 问题的描述 给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值;如果这个最大值是负整数,则定义其最大子段和为0。即根据下面的公式进行求解。 例如: (a1,a2,a3,a4,a5)=(-5,11,-4,13,-4-2) 最大子段和为11+(-4)+13=20。 * 问题分析与解决 1.数据的存储 这个应用要处理的数据是线性结构,由于要对不确定长度的数据进行求和,因此采用顺序存储比较方便,这里用一维数组List存放数据,每个数据元素为整型。 2.简单穷举法 【算法8-1】简单穷举法求解最大子段和 * 3.改进的穷举法 通过分析,可以看到,从位置i到位置j的子列和等于从位置i到位置j-1的子列和加上List[j],即 * 4.分治法 所谓分治法就是将一个难以解决的问题拆分成若干小问题或规模较小的相同问题,分别解决后原问题便得到解决,即所谓各个击破分而治之。 本问题采用的是类似归并排序的递归算法的拆分方法,简要描述如下。 步骤1:将所给序列List[0]~List[n-1]分为两段List[0]~List[n/2-1]和List[n/2]~List[n-1]; 步骤2:分别递归求得两段的最大子列和MaxLeftSum和MaxRightSum; 步骤3:从中分点分别向左、右两边扫描,找出中间跨分界线的最大子列和MaxMidSum; 步骤4:MaxSum=max{MaxLeftSum,MaxMidSum,MaxRightSum}。 * * 5.动态规划法 动态规划方法是一种自底向上的求解方法,即根据得到的递归式,按照递归返回的顺序计算所要求的值。 从上述基于分治思想的求解分析中可看出,若记 则所求的最大子段和为: 由b[j]的定义知,当b[j-1]0时,b[j]=b[j-1]+a[j],否则b[j]=a[j]。由此可得计算b[j]的动态规划递归式: * * 问题描述 可以用二叉树的形式表示表达式,这样就可以通过对二叉树的遍历完成表达式的计算,那么如何将一串字符构成的算术表达式转换为二叉树形式的存储就是首先要解决的问题。 假设一串字符构成的算术表达式是仅含有二目运算的前缀、中缀和后缀表达式,考虑如何将它们转换成二叉树的表示形式。 8.2 表达式树的构造 * 问题分析与解决 本问题的输入数据是一串字符,在转换过程中,该串字符不需要改变,只需要顺次读取,因此可采用一维字符数组存储。本问题的输出是棵二叉树,二叉树中每个结点的数据域为一个运算对象或运算符。 将顺序存储的前缀表达式转换为表达式的二叉树存储时,需要借助一个栈空间帮助实现,用于暂存构造二叉树存储过程中形成的子树的根结点。 * 1.顺序存储的前缀表达式转换为表达式的二叉树存储 步骤1:读取表达式串的第一个字符。 步骤2:如果当前读入的字符是运算符,则将其作为单个结点构造一棵二叉树,并将这棵二叉树结点压入堆栈。 步骤3:如果当前读入的字符是运算对象,则将其作为单个结点构造一棵二叉树,然后读取栈顶元素,根据如下判断进行处理: 如果当前栈顶元素为运算符结点,则将构造的运算对象结点二叉树入栈; 如果当前栈顶元素为运算对象结点,则弹出栈顶的前两个元素,第二个弹出的结点必为运算符结点,将弹出的第一个结点和构造的结点分别作为运算符结
您可能关注的文档
- 数据结构C语言版严蔚敏李冬梅吴伟民第2章线性表课件教学.ppt
- 数据结构C语言版严蔚敏李冬梅吴伟民第3章栈和队列课件教学.ppt
- 数据结构C语言版严蔚敏李冬梅吴伟民第5章树和二叉树课件教学.ppt
- 数据结构C语言版严蔚敏李冬梅吴伟民第6章图课件教学.ppt
- 数据结构C语言版严蔚敏李冬梅吴伟民第7章查找课件教学.ppt
- 数据结构C语言版严蔚敏李冬梅吴伟民第8章排序课件教学.ppt
- 数据结构C语言版吴子东数据结构课件教学.ppt
- 数据结构C语言版吴子东第1章绪论课件教学.ppt
- 数据结构C语言版吴子东第2章线性表课件教学.ppt
- 数据结构C语言版吴子东第3章链接表课件教学.ppt
- 2026年周口市城乡一体化示范区招聘公益性岗位人员10人备考题库最新.docx
- 2025新疆六师公安机关面向社会招聘警务辅助人员55人考前自测高频考点模拟试题附答案.docx
- 2025江西省交投数智科技有限公司招聘12人笔试备考试题最新.docx
- 2025新疆兵投检验检测有限责任公司市场化招聘4人备考题库最新.docx
- 2025年莒南县司法局下属单位招聘备考题库附答案.docx
- 2025年陵县体育局下属单位招聘备考题库附答案.docx
- 2025年罗源县发改委下属事业单位招聘笔试参考题库附答案.docx
- 2025湖北交投宜昌高速公路建设管理有限公司管理人员遴选5人备考题库附答案.docx
- 2025广东深圳市福田区教育科学研究院市内选调教研员11人备考题库最新.docx
- 2025广东广州市岑村强制隔离戒毒所招聘警务辅助人员3人备考题库最新.docx
原创力文档


文档评论(0)