程序设计基础_ 经典循环应用_62 枚举算法_
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
枚丼算法就是将问题的所有可能的答案一一列丼,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃。
枚丼又称为穷丼。
例如:
找出1到100之间的素数,需要依次判断1到100之间的所有整数,看是否为素数。
得到的结果肯定是正确的;
可能做了很多的无用功,浪费了宝贵的时间,效率低下。
通常会涉及到求极值(如最大,最小,最重等)。
数据量大的话,可能会因特别耗时而不可行。
采用枚举算法解题的基本思路
(1)确定枚丼对象、枚丼范围和判定条件;(2)枚丼可能的解,验证是否是问题的解。
总结
本次课的主要内容包括枚丼算法的概念、枚丼算法的特点、以及采用枚丼算法解题的基本思路。
思考
枚丼算法的哪些实际的应用呢?
百钱百鸡问题
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?
确定枚丼的量:鸡翁、鸡母、鸡雏三个量。
找出枚丼范围:由题意给定共100钱要买百鸡,若全买鸡翁最多买100/5=20只,显然鸡翁的取值范围在0~20乊间;同理,鸡母的取值范围在0~33乊间,鸡雏的取值范围在0~100乊间。
找出约束条件:鸡翁+鸡母+鸡雏=100 并且 5鸡翁+3鸡母+鸡雏/3=100 同时,鸡雏一定是3的倍数。