问题求解的算法基础学习用计算机思维.PPT

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

1、求1000以内既能被5整除又能被7整除的数之和。 2、求Fibonacci数列前20项之和。 3、求 4、 x 与y之间存在以下关系,写出输入X后求解Y的流程图。 5、求1+(1+2)+(1+2+3)+……+(1+2+3+…10)。 提示: 在循环中每次计算(1+2+…+i) 6、输入X、Y、Z,按由大到小顺序输出这三个数。 7、输入10个数,计算平均值并找出最小值。 2x+1 x1 y= x x=1 4x-5 x1 写出求解下列问题的Python程序 小学四则运算测试机 随机产生[1,10]之间的两个操作数 如第一个为3,第二个为6 import random a=random.randint(1,10) 随机产生一个运算符(+,-,*,/) 把操作数和运算符作为一个算式打印 用户输入算式的运算结果 程序判断是否正确,并给出提示 如“您答对了”或“您算错了” 让用户不停地答题,直到他输入’0000’ 2.4 算法设计常用方法 1、穷举法 2、迭代与递推 3、分治法 4、递归法 5、排序 6、查找 2.4 算法设计常用方法 1、穷举法 * 穷举法又称枚举法。就是根据问题已知条件对所有可能的解一一测试,经验证只要符合条件的就是解。 这样的解可能有多个,当然,也可能无解。 穷举法虽然易于理解,但却费时。 2.4 算法设计常用方法 * 例 猜车牌号问题。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照号是4个数字,前两位数字是相同的,但不是零;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车牌号。 问题分析 按目击人所述,车牌号应是AABB式样,其中A不是0,A与B不相等,并且AABB是另一整数的完全平方。因为四位整数的完全平方根如果是整数,则平方根一定大于31并且小于100。根据以上分析,只要枚举A与B的每一种组合,再验证平方根问题,就可以得到问题的解。 * 百钱买百鸡问题。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问翁、母、雏各几何? 问题分析 设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在0-20之间;同理,y的取值范围在0-33之间,可得到下面的不定方程: 所以此问题可归结为求这个不定方程的整数解。 由程序设计实现不定方程的求解,与手工计算不同。在分析确定方程中未知数变化范围的前题下,通过对未知数可变范围的穷举,验证方程在什么情况下成立,从而得到相应的解。 2、迭代与递推 * 迭代与递推是数学中常用的一种方法。它是利用问题本身具有的递推关系来求解问题,常常是利用变量已经得到的旧值去推导新值,反复推导演绎从而最终得到问题的解。 在算法设计时,问题的状态用变量进行描述,当新旧状态用同一变量来表示时称为迭代法,而新旧状态用不同的变量描述,且新变量的值是在旧变量的值的基础上推出来的,就称为递推。 * 例 存钱问题。假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中每年的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。 问题分析 采用倒推的方法分析存钱和取钱的过程。若第五年年底连本带息要取1000元,先求出第五年年初银行存款的钱数: 第五年年初存款=1000 / (1+12 *0.0063) 第四年年初存款=(第五年年初存款+1000) / (1+12 *0.0063) 第三年年初存款=(第四年年初存款+1000) / (1+12 *0.0063) 第二年年初存款=(第三年年初存款+1000) / (1+12 *0.0063) 第一年年初存款=(第二年年初存款+1000) / (1+12 *0.0063) 假设第n年初的存款为total,则第n-1年的年初存款可以通过迭代公式: totaln-1=(totaln+1000) / (1+12*0.0063) * 例 Fibonacci数列:1,2,3,5,8,13,21...,试打印这个数列的前20项,并求它们的和。 问题分析 从观察数列各项可以得到规律:第三项开始,每一项的值等于前两项的和。根据数学知识可以得到该数列的通项公式:a1=1,a2=2,an=an-1+an-2 (当n2),也就是由已知的连续两项可以递推出后一项。

文档评论(0)

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

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

1亿VIP精品文档

相关文档