自动化求解问题的算法.pptVIP

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
阿姆斯特朗数 阿姆斯特朗数也叫水仙花数。 定义如下:若一个n位自然数的各位数字的n次方之和等于它本身,则称这个自然数为阿姆斯特朗数。 153 =13+33+53 8208=84+24+0+84 穷举过程 程序代码: For i = 1 To 9 For j = 0 To 9 For k = 0 To 9 x = 100 * i + 10 * j + k If i ^ 3 + j ^ 3 + k ^ 3 = x Then Print x Next k Next j Next i 穷举算法的优化 优化策略1:“用空间换时间”策略,是优化程序的一种常用方法。 优化思路2:减少穷举的变量,考虑元素之间的关联,其他元素通过计算和分析得出解元素的可能值。 优化思路3:减少穷举变量的值域,通过和穷举变量间的数学关系定义解元素的值域。 经过优化的代码 For x = 100 To 999 i = x \ 100 '整除运算 j = x \ 10 Mod 10 '先整除再取余 k = x Mod 10 '取余运算 If i ^ 3 + j ^ 3 + k ^ 3 = x Then Print x Next x 邮票面值。邮局发行一套票面有四种不同值的邮票,如果每封信所贴邮票张数不超过三枚,存在整数R,使得用不超过三枚的邮票,可以贴出连续的整数1、2、3,…,R来,找出这四种面值数,使得R值最大。 袋中取球。口袋中有红、黄、蓝、白、黑五种颜色的小球。每次从口袋中取三个球,问最多有几种不同的取法,输出各种取法。 * 递推法 递推法是利用问题的递推关系求解的一种方法。 设要求问题规模为N的解,当N=1时,解或为已知,或能非常方便地得到解。 递推性质,即当得到问题规模为i-1的解后,由问题的递推性质,能从已求得的规模为1,2,…,i-1的一系列解,构造出问题规模为 i 的解。 程序可从i=0或i=1出发,重复地,由已知至i-1规模的解,通过递推,获得规模为i的解,直至得到规模为N的解。 s=1+2+3+4+5 S=0 S=0+1 S=1+2 (s=3) S=1+2+3 (s=6) S=1+2+3+4 (s=10) S=1+2+3+4+5 (s=15) i 规律: s←s+i 求:s=1+2+3+4+5: S=1+2+3+4+5+6 (s=21) S=1+2+3+4+5+6+7 (s=28) S=1+2+3+4+5+6+7+8 (s=36) +6+7+8 i←i+1 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 这种从头开始一步步地推出问题最终结果的方法,就是递推方法。递推是序列计算中的一种常用方法。 ? 递推算法运用关键: 找出变化规律,写出递推公式 确定递推次数,设计算法,编程 求s=1+2+3+4+…..+n的值 i<=n S=0 i=i+1 s=s+i 真 假 S=0 Do while i<= n s=s+i i=i+1 Next i Print s S=1 S=1?2 S=1?2?3 S=1?2?3?4 S=1?2?3?4?5 规律: i←i+1 用递推法求阶乘:s=1?2?3… ?N …… 初值: s←s?i s←1 i←1 S=1 i=1 Do while i<= n s=s*i i=i+1 Next i Print s * 递归法 递归算法是一种直接或者间接地调用自身算法的过程。 在计算机编写程序中,递归算法对解决某一类问题是十分有效的,它往往使算法的描述简洁而且易于理解。 下面我给大家讲一个故事,故事说的是: 从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,他说 从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,他说…… 递归法 上面的故事用递归算法描述: procedure tell-story begin if 老和尚停止讲故事 then 此过程结束 else begin 从前有座山,山上有座庙,……他说 tell-story end if end 从上面事例不难看出,递归算法存在的两个必要条件: (1)?过程的描述中包含它本身; (2)?必须有递归的终止条件

文档评论(0)

技术支持工程师 + 关注
实名认证
文档贡献者

仪器公司技术支持工程师

1亿VIP精品文档

相关文档