第1章 问题解决与程序设计.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章 问题解决与程序设计

第1章 问题解决与程序设计 问题分析与算法设计 程序设计 1.1 程序解决实际问题的步骤 软件工作原理 一个问题的求解是通过构造其算法(程序)来解决。 软件开发过程 问题的定义 设计解决方案 编码 测试 运行及维护 1.2 算法设计 算法是解决某类特定问题的方法和步骤。 为解决一类特定问题而采取的确定的有限的操作步骤称为算法。 算法是一系列解决问题的清晰指令,能够对一定规范的输入,在有限的时间获得要求的输出。 计算机算法分为:数值运算算法和非数值运算算法。 1.2.1 算法设计中常用的思维方法 枚举法 基本思想是:首先根据问题的部分条件预估答案的范围,然后在此范围内对所有可能的情况进行逐一验证,直到全部情况均通过了验证为止。若某个情况使验证符合题目的全部条件,则该情况为本题的一个答案;若全部情况验证结果均不符合题目的全部条件,则说明该题无答案。 【例1-1】 今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何? 对于计算机而言,可以使用枚举法来解决该问题。 据题意可知,鸡与兔的范围一定是0到35之间的正整数,那么,最简单的解题方法是:假设一组x、y的值,直接带入方程组求解,即在各个变量的取值范围内不断变化x、y的值,穷举x、y全部可能的组合,若满足方程组则是一组解。这样即可得到问题的全部解。 这个算法中需要不断循环x、y全部可能的组合。 1.2.1 算法设计中常用的思维方法 枚举法解题需要以下步骤: (1) 分析题目,确定答案的大致范围。 (2) 确定列举方法。常用的列举方法有:顺序列举,排列列举和组合列举。 (3) 作试验,直到遍历所有情况。 (4) 试验完后可能找到与题目要求完全一致的一组或多组答案,也可能没找到答案,即证明题目无答案。 1.2.1 算法设计中常用的思维方法 枚举法的特点 算法简单,容易理解,但运算量较大。 枚举法的应用 可确定取值范围但又找不到其它更好的算法时,可以用枚举法。 通常枚举法用来解决有几种组合、是否存在、求解不定方程等类型的问题。 利用枚举法设计算法大多以循环控制结构实现?。 ? 拓展训练:谁说了假话 1.2.1 算法设计中常用的思维方法 迭代法 迭代法是一种数值近似求解的方法,在科学计算领域中,许多问题需要用这种方法解决。 迭代法的特点是:把一个复杂问题的求解过程转化为相对简单的迭代算式,然后重复执行这个简单的算式,直到得到最终解。 【例1-2】 计算S=1+2+3+4+…+100 1.2.1 算法设计中常用的思维方法 递归法 递归是设计和描述算法的一种有力的工具,在复杂算法的描述中被经常采用。 例如著名的斐波那契数列,由于数列的未知项与已知项之间存在着一定关系,借助于已知项和这一关系,就可逐项求出未知项。 【例1-3】 求n!,n=15。 1.2.1 算法设计中常用的思维方法 分治法 在求解复杂问题时,尽可能地把这个问题分解为较小部分,找出各部分的解,然后再把各部分的解组合成整个问题的解,这就是所谓的分治法。 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 分治策略是对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,然后将各子问题的解合并得到原问题解。 1.2.1 算法设计中常用的思维方法 分治法的思维过程: ① 分--将问题分解为规模更小的子问题; ② 治--将这些规模更小的子问题逐个击破; ③ 合--将已解决的子问题合并,最终得出“母”问题的解; 分治法所能解决的问题一般具有以下几个特征: (1)该问题的规模缩小到一定的程度就可以容易地解决。 (2)该问题可以分解为若干个规模较小的相同问题。 (3)利用该问题的子问题的解可以合并为该问题的解。 (4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 1.2.1 算法设计中常用的思维方法 1.2.2 算法的表示 算法可以用任何形式的语言和符号来描述 自然语言 程序语言 流程图 N-S图 PAD图 伪代码 其他 1.顺序结构 1.2.3 算法中的控制结构 2.选择结构 1.2.3 算法中的控制结构 3.循环结构 1.2.3 算法中的控制结构 1.容错处理 设计再精确的算法在执行过程中也难免会出现一些故障,这些故障可能是算法本身不严谨所致,也可能是由于运行环境改变所致。因此,算法设计过程中,必须进行一定的容错处理,当出现问题时,应该能很快做出恰当的处理。 2.并行处理 算法的执行效率也是算法的一个重要指标,并行处理是提高算法效率的一个有效途径。多进程、多线程技术,充分利用这些软硬件支持,设计一些并行算法可提高算法效率。 1.2.4 算法设计过

文档评论(0)

yanpan1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档