百鸡百钱问题及其算法分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
资料范本
本资料为word版本,可以直接编辑和打印,感谢您的下载
百鸡百钱问题及其算法分析
地点:__________________
时间:__________________
说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容
百钱百鸡问题的最佳解决方案
(陕西师范大学计算机科学学院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<=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语言程序设计(第三版)清华大学出版社。