枚举法,常常称之为穷举法,是指从可能的集合中一一枚举各个元素.docVIP

枚举法,常常称之为穷举法,是指从可能的集合中一一枚举各个元素.doc

  1. 1、本文档共18页,可阅读全部内容。
  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文档。上传文档
查看更多
枚举法,常常称之为穷举法,是指从可能的集合中一一枚举各个元素

第五讲 穷举算法 学习重点: 1、了解穷举法的基本概念及用穷举法设计算法的基本过程。 2、能够根据具体问题的要求,使用穷举法设计算法,编写程序求解问题。 3、能对穷举法编写的程序进行优化 学习过程: 穷举算法是学生在学完了QB基本语句后最早接触到的算法。一些简单的穷举算法题目如求水仙花数、找出缺失的数字等和小学生的数学学习紧密结合,程序也比较容易实现,因此学生的学习兴趣还是很高的。近几年的省小学生程序设计竞赛中也常出现穷举算法的题目,如:2001年题四算24;2002年题三求素数个数与素数个数最多的排列;2005年回文数个数等题目,有些题虽然说用穷举算法实现比较勉强(如2002年题三的后半题求出素数个数最多的排列),但在考试时,如果一时想不出更好的办法,用穷举算法也不失为一种明智的选择。 穷举法,常常称之为举法,是指从可能的集合中一一穷举各个元素,用题目给定的约束条件判定哪些是无用的,哪些是有用的。能使命题成立者,即为问题的解。穷举是最简单,最基础,也是没效率的算法,但是。穷举拥有很多优点,。首先,穷举有准确性,只要时间足够,正确的穷举得出的结论是绝对正确的其次,穷举拥有全面性,因为它是对所有方案的全面搜索,所以,它能够得出所有的解。采用穷举算法解题的基本思路: (1)确定穷举对象、穷举范围和判定条件; (2)一一举可能的解,验证是否是问题的解 穷举算法的穷举36 块砖, 36 人搬。男搬 4 ,女搬 3 ,两个小儿抬一砖。要求一次全搬完。问需男、女、小儿各若干?题目要我们找出符合条件的男生、女生和小孩的人数。答案显然是一组数据。首先分析一下问题所涉及的情况。对于男生来说,至少要有一人;每个男生可以搬4 块砖,那么 36 块砖最多 9 个男生足够,共有 9 种不同取值。同样,女生有 12 种不同取值。两个小孩抬一块砖,至少要有两个小孩,最多 36 个,并且小孩的人数必须是个偶数,所以小孩的人数可以取 18 种不同的值。最坏情况下,男生、女生和小孩的人数可以是 9 × 12 × 18 = 1944 种不同组合。假设男生人数为 x ,女生人数为 y ,小孩人数为 z 。可以构建一个三重循环for x=1 to 9 for y=1 to 12 for z=2 to 36 step 2 if x*4+y*3+z/2=36 then print x,y,z next z next y next x end 2、方格内填字符 【问题描述】在5个连成一串的方格内填入“a”和“b”,但“b”不能填在相邻两格内。打印出所有填法和总方案数。 【问题分析】(1)用五重循环列举;(2)由于QB中FOR语句不能直接列举字符,所以用“A”和“B”的ASCII码作为循环的初值和终值;(3)需排除含“BB”、“AAAAA”的各种情况。 【程序清单】 REM 5_2.bas s = 0 bb = 132: aaaaa = 325 ’连续填“BB”的ASCII和为132,“AAAAA”为325; FOR a = 65 TO 66 FOR b = 65 TO 66 FOR c = 65 TO 66 FOR d = 65 TO 66 FOR e = 65 TO 66 x = a + b + c + d + e: ab = a + b: bc = b + c: cd = c + d: de = d + e IF x 325 AND ab bb AND bc bb AND cd bb AND de bb THEN PRINT CHR$(a); CHR$(b); CHR$(c); CHR$(d); CHR$(e): s = s + 1 NEXT e, d, c, b, a PRINT s 3、简单的24点 【问题描述】从键盘输入4个整数(每个数均大于等于1),算一算能否凑成24点。(说明:数字的顺序不能改变,并按从左到右的次序运算,不考虑运算符的优先级别) 例如:输入2,2,6,1 则输出为: 2+2*6*1 2+2*6/1 2*2*6*1 2*2*6/1 输入:4,8,10,2 则输出:4+8+10+2 4*8-10+2 【问题分析】4个数中需填入3处运算符,每一处运算符都应该有“+”、“-”、“*”、“/”四种可能的情况,因此,可以用三重循环一一列举;每一处运算符确定后,与它相邻的两个数就有一个结果,这个结果根据运算符来定,可能是两数的和或差或积或商,我们用SELECT CASE语句来处理;最后打印结果时,为了能打印出运算符,还是需要SELECT CASE语句。 【程序清单】 Rem 5_3.bas

文档评论(0)

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

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

1亿VIP精品文档

相关文档