[其它]lesson 7 计算机算法初步.ppt

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

电气与信息工程学院计算机系张吴波制作 * Lesson 8 计算机算法初步 学习目标: 3 1 掌握几个常用的解题算法:枚举、迭代 3 穷举法 2 概述 穷举法,又称为枚举法,是人们日常生活中常用的一种求解问题的方法。 根据问题中的部分条件(已知的条件)将所有可能解的情况列举出来,然后通过一一验证是否符合整个问题的求解要求,而得到问题的解。 3 穷举法 2 1、旅行途中发现自己忘记了开锁的密码,怎么办? 2、从某个班中找出所有班干部,需要逐一对每个同学进行查看,判断是否是班干部。 3 穷举法 2 穷举法的核心在于明确问题的所有可能性,并针对每种可能情况逐个进行判断,最终找出正确问题的答案。 穷举解题步骤: 1、问题解的可能搜索的范围: 用循环或循环嵌套结构实现 2、写出符合问题解的条件。 3 穷举法 2 所谓素数是指仅能被1和自身整除,且大于等于2的数值。如7,11,17,23等 例1:判断给定整数是否是素数 。 3 穷举法 2 问题分析 为了检查一个整数是不是素数,可以采用穷举法。假设给定的整数用x表示,则判断过程就是确认x不能整除以2~x-1之间的任何整数。这就需要一一列举出2~x-1之间的每个整数进行排查。 算法描述 N Y 开始 输入x 2 ? t t x t 加1 x%t==0 结束 输出“不是素数” 输出“是素数” Y N t == x Y N #include stdio.h int main( ) { int x, t; printf( “Enter an integer: ” ); scanf( “%d”, x ); for (t = 2; tx; t++ ) /* 列举小于x大于1的所有整数 */ if ( x%t == 0 ) break; if ( t == x ) /* 是否通过循环条件出口 */ printf( “%d is prime\n”, x ); else printf( “%d isn’t prime\n”, x ); return 0; } 注意判断是否是素数的条件与判断位置 lesson8_01.c 3 穷举法 2 例2:百钱买百鸡 “百钱买百鸡”是我国古代数学家张丘建提出的一个著名的数学问题。假设某人有钱百枚,希望买一百只鸡;不同的鸡价格不同,公鸡5枚钱一只,母鸡3枚钱一只,而小鸡3只1枚钱。试问:如果用百枚钱买百只鸡,可以包含几只公鸡、几只母鸡和几只小鸡。 3 穷举法 2 问题分析 从题目要求可知:公鸡、母鸡和小鸡的数量是有限的,都不会超过100。通过对不同数量的公鸡、母鸡和小鸡进行组合,可以计算出购买这些鸡所用的花费,但这个题目要求找出那些花费正好100枚且鸡的总数也为100只的情况。 因此,可以采用穷举法,将不同的公鸡、母鸡和小鸡的数量枚举一遍,找出那些符合题目要求的解。 算法描述 #include stdio.h #include math.h int main( ) { int x, y, z; ? for( x=0; x=100/5; x++ ) for( y=0; y=100/3; y++ ) for( z=0; z=100; z++ ) { if (x+y+z ==100 15*x+9*y+z==300) printf( “x=%d, y=%d, z=%d\n”, x, y, z ); } return 0; } lesson8_02.c 3 课堂练习 3 1、求所有的三位水仙花数 若一个3位自然数的各位数字的3次方之和等于它本身,则称这个自然数为水仙花数。 例如:153(153=13+33+53)是水仙花数 3 递推与迭代法 4 概述 递推是计算机数值计算中的一个重要算法。其基本策略是将复杂的运算划分为可以重复操作的若干个简单的运算,进而充分利用计算机擅长重复计算的特点。 采用递推法进行问题求解的关键在于找出递推公式和边界条件。 3 递推与迭代法 4 例3:等比数列求和 等比数列是指在一组数据中,后项和前项之前存在着一个固定的比例关系。例如:整数序列3、15、75、375的初值是3,后项与前项是5倍的关系,即前项乘以5得到后项。 本题要求给定等比序列的首项和比例,计算这个数列的前10项之和。 3 递推与迭代法 4 问题分析 等比数列的递推公式为: itemi = itemi-1 * ratio 后项等于前项乘以比例值 sumi = sumi-1 + itemi

文档评论(0)

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

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

1亿VIP精品文档

相关文档