百鸡百钱问题及其算法分析
-
百钱百鸡问题的最佳解决方案
(陕西师范大学计算机科学学院
10
级计科一班
p>
西安
710062
)
摘要
:本文主要讨论百鸡百钱问题,
通常用蛮力法策略,<
/p>
用枚举法表现,排除明显不合理情
况,列举出符合问题的解,分别
验证解的可行性,得到最优算法。
关键词:
蛮力法;枚举;百鸡百钱;
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
算法设计
p>
根据问题中的约束条件将可能的情况一一列举出来,
但如果情况很多
,
排除一些明显的
不会理的情况,尽可能减少问题可能解的列举
数目,然后找出满足问题条件的解。
1
)算法设计一
首先问题有三种不同的鸡,那么我们可以设鸡翁为
x
只,<
/p>
鸡母为
y
只,鸡雏为
z
只。由
题意给出一共要用
100
钱买一百只鸡,
如果我们全部买鸡翁最多可以买
100
/
5=20
只,
显然
x
的取值范围是
1
~
20
之间;如果全部买鸡母最多可
以买
100
/
3
=
33
只,显然
y
< br>的取值范
围在
1
~
33
之间;如果全部买鸡雏最多可以买
100
×
3
﹦
300
只,可是题目规定是买
100
只,
所以
z
的取值范围是
1<
/p>
~
100.
那么约束条件为:
x
+
y
+
z
=
100
且
5
×
x
+
3
×
y+100
/
3
=
100.
流程图如下:
开始
定义
x.y,z
结束
N
N
x<=20?
Y
N
y<=33?
Y
z<=99?
Y
百鸡百钱?
Y
输出结果
N
算法
1
程序运行结果截图
: