第4章 计算机算法初步.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 计算机算法初步 4.1 程序与算法的概念 程序:可以被计算机处理的指令序列。 算法:解决问题的步骤、流程,即先做什么,后做什么。 利用计算机求解问题的一般过程 (1)问题分析阶段 (输入信息、输出) (2)数据结构设计阶段 (3)算法设计阶段 (4)编码与调试阶段 4.2 算法描述 一种是自然语言的描述方法。鉴于自然语言本身过于灵活且又缺乏严谨性,所以容易产生理解上的歧义。 还有一种算法的图形描述方式——流程图。它采用一些标准的图形符号描述算法的操作过程,从而避免了人们对非形式化语言的理解差异。 N-S图(盒图) 伪代码 常用流程图符号 例1:求解一元二次方程 问题分析 假设一元二次方程可以书写成ax2+bx+c=0。可以看出,任何一个一元二次方程都由三个系数a、b、c惟一确定,所以,首先需要用户输入三个系数,然后再根据一元二次方程的求解规则计算最终的结果,并将结果显示输出。 算法描述 程序代码 求最大公约数流程图 4.3 结构化程序设计的基本结构 1966年,Bohra和Jacopini提出了以下三种基本结构,作为构造算法的基本单元 顺序结构 选择结构 循环结构 顺序结构和选择结构的流程图如下图所示 循环结构 当型循环结构(while型循环)如图循环结构1所示 直到型循环结构(Until型循环) 如图循环结构2所示 求最大公约数流程图 4.4 穷举法 穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。例如,从某个班中找出所有班干部,需要逐一对每个同学进行查看,判断是否是班干部。这种方法的基本思路就是一一列举每个可能性,逐个进行排查。因此,穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。 例3:百钱买百鸡。 问题分析 从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。因此,可以采用穷举法,将不同的公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。 穷举法应用实例1:百钱买百鸡 “百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。 算法描述 p82 例2:判断给定整数是否是素数 。 问题分析 为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2~x-1之间的任何整数。这就需要一一列举出2~x-1之间的每个整数进行排查。 递推法 概述 递推是计算机数值计算中的一个重要算法。其基本策略是将复杂的运算划分为可以重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。在C程序中,利用for语句实现迭代的过程,可以认为是递推的一种特例。 采用递推法进行问题求解的关键在于找出递推公式和边界条件。 递推与迭代法应用实例1:等比数列求和 所谓等比数列是指在一组数据中,后项和前项之前存在着一个固定的比例关系。 例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。 本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。 * * 4.3 结构化程序设计的基本结构 4.2 算法描述 4.1 程序与算法的概念 4.4 穷举法、递推算法 起止框 I/O框 处理框 判断框 需要进一步展开 连接符 流程线 #include stdio.h #include math.h main( ) { int a, b, c,t; printf( “Input a,b,c: ” ); scanf( “%d%d%d”, a, b, c ); t = b*b – 4*a*c; if (t0) printf( “No solution\n” ); else if ( t==0 ) printf( “X = %lf\n”, -b/(2.0*a) ); else { double t0; t0 = sqrt( (double)t ); printf( “X1 = %lf, X2= %lf\n”, (-b+t0)/(2*a), (-b-t0)/(2*a) ); } } 计算1+2+...+100 1+2=

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档