选修穷举法课件高中信息技术.pptVIP

  1. 1、本文档共12页,可阅读全部内容。
  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文档。上传文档
查看更多
选修穷举法课件高中信息技术

穷举法 (Complete?Search );概 述;枚举法的优化方法: 1)减少枚举的变量,在使用枚举法之前,先考虑一下解元素之 间的关联,将一些非枚举不可的解元素列为枚举变量,其他元素通过计算得出解元素的可能值。 2)减少枚举变量的值域 ;例1:百钱百鸡问题。 公鸡5文钱1只, 母鸡3文钱1只, 小鸡一文钱3只。 100文钱如何卖100只鸡? ? 条件分析 设买 x 只公鸡,y 只母鸡,z 只小鸡,则有: x+y+z=100 5x+3y+z/3=100 且:x、y、z 都是整数; 0 ≤ x ≤ 20; 0 ≤ y ≤ 33; 0 ≤ z ≤ 99; z%3=0。;? 基本算法思想, 上述方程属于不定方程,解并不唯一,因此,可 用穷举法对 x、y、z 的所有组合情况,测试满足 条件的解。具体是: 把x可能值0~20和y可能值0~33用二重循环来组 合??每个x和y组合都可得到z值,即z=100-x-y, 若x、y、z值使5x+3y+z/3=100成立,则该组x、 y、z即为一组所求值。即: 穷举范围: x : 0~20 , y : 0~33 , z : 100-x-y 判断式: z%3==05*x+3*y+z/3==100; 另一方法是:把x可能值0~20、y可能值0~33和z 可能值0~99用三重循环来组合,若x、y、z值使 5x+3y+z/3=100和x+y+z=100同时成立,则该组x、 y、z即为一组所求值。即: 穷举范围: x : 0~20 , y : 0~33 , z : 0~99 判断式: z%3==05*x+3*y+z/3==100x+y+z==100 ;金手指考试网 / 2016年金手指驾驶员考试科目一 科目四 元贝驾考网 科目一科目四仿真考试题C1;main( ) { int x, y, z, j=1; printf(Possible solutions to buy 100 fowls whith 100 wen:\n); for (x=0; x=20; x++) for (y=0; y=33; y++) { z=100-x-y; if (z%3==05*x+3*y+z/3==100) { printf(%2d:cock=%-2d hen=%-2d chicken=%-2d\n, j, x, y, z); j++;} } };运行结果: Possible solutions to buy 100 fowls whith 100 wen: 1: cock=0 hen=25 chicken=75 2: cock=4 hen=18 chicken=78 3: cock=8 hen=11 chicken=81 4: cock=12 hen=4 chicken=84;例2:打印出所有的“水仙花数”。所谓“水仙花 数”是指一个三位正整数,其各位数字的立方和 等于该数本身,例如:153=13+53+33 。 ? 穷举范围:即把所有的三位正整数100~999按题 意一一进行判断。 ? 判断式:如果一个三位正整数n的百位、十位、 个位上的数字分别为i、j、k,则判断式为: n = i3 + j3 + k3 ? 如何分解三位数n的百位、十位、个位: 百位:i = n/100; 十位:j = ( n/10 )%10; 个位:k = n%10;;#include stdio.h main() { int n,i,j,k; for( n=100; n=999; n++ ) { i = n /100;

您可能关注的文档

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档