- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序概论.ppt
* 第2种描述: 输入(k)//k表示当前年份 if (k能被4整除 and k不能被100整除) or (k能被100整除 and k能被400整除) then 输出(“是闰年”) else 输出(“不是闰年”) end if * 1.2.2 算法设计的原则和步骤 原则:自顶向下,逐步求精 一般步骤 明确算法的输入、输出数据 自顶向下,逐步求精 模块结构 * 1.2.3 算法设计基本方法与策略 算法设计主要有以下的一些策略和方法和策略: 穷举策略(对所有可能解逐一尝试,找出问题的真正解); 递推与递归策略(求阶乘,利用信息间本身的递推关系,逐步求解出问题的解); 分而治之策略(快速排序、二分策略,将大问题分解为同一类容易解决的子问题,再将子问题的解“合成”,以得到大问题的解); 回溯策略(迷宫问题, 遍历所有可能的通路,当发现此路不通时,回溯到上一步,继续尝试其他通路); 贪心策略(与利润有关的部分背包问题、最少张人民币付款问题(24)、霍夫曼树,按一定顺序,在只考虑当前局部信息的情况下,就做出一定的最优决策,通过多个阶段,最终得出问题的解); 动态规划策略(通过多阶段决策过程解决问题。每一个阶段的决策结果序列中,最终哪一个最优,取决于后面的阶段,即,最优解是在每一个阶段的不停动态调整过程中,不断进行优化得到的,如:最短路近) 。 * 背包问题 背包问题版本很多,根据不同的背包要求,有不同的解决方案: 与利润无关的背包问题:从9件物品中挑选出3件使其质量和与500克之差的绝对值最小(穷举算法) * 与利润有关的背包问题: (1)部分背包:背包重量固定,要求获利最大。可以装的货品可以根据需要进行拆分。(贪心策略,将货品按利润率排序,先挑利润率最高的货品,再挑次高的,以此往下,直到装满) * (2)0/1背包问题:货品不能拆分 策略:递归枚举、回溯策略、动态规划 * 算法设计的要求 1、正确性 2、可读性 3、健壮性: 4、效率与低存储量需求 算法类型: 数值算法、非数值算法。 * 1.2.4 编程解决问题的一般步骤 1.分析问题 2.概要设计(设计数据结构、算法框架) 3.详细设计--提供算法描述 4.算法实现、调试与测试 5.整理、编写文档 * 例:求一元二次方程 ax2+bx+c=0 的实根 求根公式 输入数据是什么? 方程系数:a,b,c 输出数据是什么? 如果有实根:x1,x2 如果没有实根:提示信息 a,b,c x1,x2 输入 处理 输出 1.问题分析 * 1. 输入a,b,c 2. 数据变换 3. 输出x1,x2 2-1. 计算判别式d 2-2. 根据d的值进行不同处理 2-2-1:if d0 x1=… x2=… 2-2-2:if d=0 x1=x2=… 2-2-3:if d0 …. 2.概要设计 3.详细设计 * 输入a,b,c d=sqrt(b*b-4*a*c) if(d0) 输出 x1=(-b+d)/(2*a) x2=(-b+d)/(2*a) else if(d==0) 输出 x1=x2=-b/(2*a) else 输出:无实根提示信息 伪代码描述的算法 * #includestdio.h void main() {float a,b,c,d,x1,x2; scanf(“%d%d%d”,a,b,c); d=b*b-4*a*c; if(d0) { x1=(-b+sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); printf(“x1=%f,x2=%f\n”,x1,x2); } else if (d==0) { x1=-b/(2*a); printf( “重根x=%f\n”,x1); } else printf(“无实根\n“); } 4算法实现 * 5.程序调试 调试就是找到程序中的错误并修改错误 程序的错误类型 语法错误 逻辑错误 运行时错误 * 6.程序测试 * 例1:计算 5! 例2、求1-1/2+1/3-1/4+。。。。+1/99-1/100 例3、判断N(N=3)是否素数(图1.48) * 1946年,第一台电子计算机问世,应用领域迅速扩大,软硬件飞速发展,程序设计语言相继问世。 程序设计语言:将自然语言形式化为有格式的语言 1。机器语言: 计算机能够认识的语言 计
文档评论(0)