- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
百钱百鸡问题的最佳解决方案
(陕西师范大学计算机科学学院10级计科一班 西安 710062)
摘要:本文主要讨论百鸡百钱问题,通常用蛮力法策略,用枚举法表现,排除明显不合理情况,列举出符合问题的解,分别验证解的可行性,得到最优算法。
关键词:蛮力法;枚举;百鸡百钱;
The money the chicken question the best solution
duan xi-juan, zhongmei, zhao shan-shan, zhao ya-wen
(School of Computer Science, ,Shanxi Normol University, Xi’an 710062)
Abstact :In this article, we mainly discuss the chicken and the money problem. Usually use brute force method strategy, with enumeration method performance, eliminate obviously unreasonable situation, Enumerate conform to the problem solution, which verified the feasibility of the solution, and get the optimal algorithm.
Keywords: The brute force method;Enumeration;Hundred chickens money
1引言
在求解一个较小规模的问题时,可以根据问题中的约束条件把可能的情况一一列举出来,然后注意尝试从中找到满足约束条件的解,若该问题规模较大,符合条件的情况很多,则需要进一步考虑,排除一些明显不合理的情况,尽可能减少问题可能解的列举数目。
2问题描述
百钱百鸡问题。中国古代数学家张丘建在他的《算经》中提出了他的著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?
3算法设计
根据问题中的约束条件将可能的情况一一列举出来,但如果情况很多,排除一些明显的不会理的情况,尽可能减少问题可能解的列举数目,然后找出满足问题条件的解。
1)算法设计一
首先问题有三种不同的鸡,那么我们可以设鸡翁为x只,鸡母为y只,鸡雏为z只。由题意给出一共要用100钱买一百只鸡,如果我们全部买鸡翁最多可以买100/5=20只,显然x的取值范围是1~20之间;如果全部买鸡母最多可以买100/3=33只,显然y的取值范围在1~33之间;如果全部买鸡雏最多可以买100×3﹦300只,可是题目规定是买100只,所以z的取值范围是1~100.那么约束条件为:x+y+z=100且5×x+3×y+100/3=100.
开始定义x.y,z
开始
定义x.y,z
x=20?
y=33?
z=99?
百鸡百钱?
结束
N
输出结果
N
N
N
Y
Y
Y
Y
算法1程序运行结果截图:
2)算法设计二
假如我设了鸡翁和鸡母的个数为x和y了,那么鸡翁和鸡母的数量就是确定的,那么鸡雏的数量就是固定的为100﹣x﹣y,那么此时就不再需要进行枚举了,约束条件就只有一个了:5×x+3×y+z/3=100.
流程图如下所示:
结束
结束
图5-9 程序执行流程图算法2程序运行结果截图:
4算法分析
算法设计一需要枚举尝试次,算法的效率显然很低。算法设计二只须枚举尝试次。实现时约束条件又限定z能被3整除时,才会判断“”。这样省去了不整除3时的算术计算和条件判断,进一步提高了算法的效率。
5结束语
有此例可以看出,枚举法是蛮力策略的一种变现形式,也是一种使用非常普遍的思维方法。然而对于同一个问题,可以有不同的枚举范围,不同的枚举对象,解决问题的效率差别就会很大,选择合适的方法会让解决问题的效率大大提高。
6参考文献
[1]吕国英 算法设计与分析(第二版)[M].北京:清华大学出版社,2009.
[2]朱清新 计算机算法分析导论[M].北京:人民邮电大学出版社
[3]谭浩强 C语言程序设计(第三版) 清华大学出版社
文档评论(0)