前言
百钱百鸡问题作为一个经典的数学问题,利用python实现,其思路也是比较简单的,主要就是利用for循环语句通过枚举法,根据题目条件确定解的大致范围,并对此范围内的所有可能的解进行逐一验证。
功能需求
一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱。用百钱买百鸡,那么公鸡、母鸡和小鸡分别可以买多少只?
分析问题
首先可以定义三个变量cock、hen、chick分别代表公鸡、母鸡和小鸡,那么问题自然而然的就转换为数学问题:
cock+hen+chick = 100
cock*5+hen*3+chick/3 = 100
程序实现
#
import time
start = time.time()
# start time
# 外层循环控制公鸡数量取值范围 1--20
for cock in range(0,21):
# 内层循环控制母鸡的数量的取值范围 0--33
for hen in range(0,34):
# 最内层控制小鸡数量的取值范围 0--100
for chick in range(0,101):
if(cock + hen + chick == 100) and (cock * 5 + hen * 3 + chick/3 ==100):
print("您可以购买的方案是:\n"+str(cock)+"只公鸡\n"+str(hen)+"只母鸡\n"+str(chick)+"只小鸡\n")
#结束时间
end = time.time()
print('此算法总耗时:',end-start)
运行效果
提升需求
如果是需要用户输入所带的钱数以及公鸡、母鸡和小鸡的价格,然后给用户返回一些可行的方案应该如何解决呢?
思路:
1:将程序写入函数中
2:函数中通过input()函数来获取用户输入的所带的钱数以及公鸡、母鸡和小鸡的价格
3:通过相应的计算规则来制定数量关系,其中各个鸡的取值范围仍需要利用range()函数来实现,但是传入的参数需要进行整理,比如range(start,end),start参数可以是0,end参数可以利用python中的math模块中的向上取整函数math.ceil()来求出。
4:最后通过print语句,按照相应的格式输出。