python-常用算法

穷举法-暴力破解法:

对所有的可能性进行验证,直到找到正确答案

例题:一百元买100只鸡,公鸡5元一只,母鸡3元一只,小姐1元三只。

for x in range(20):     #公鸡用100元最多20只
    for y in range(33): #母鸡yong100元最多33只
        z=100-x-y       #若是可以买到,那么小鸡数量满足这个式子
        if 5*x+3*y+z//3 ==100 and z%3==0:  
            print(x,y,z)

上面代码就是把公鸡母鸡最多用100元买多少只列举出来,若可以买则有结果。

 列题2:5个人,捕鱼,后,上岸,睡觉,一个人,先醒,把鱼分为5份,剩一条,扔掉。拿走自己的一份,第二人醒了,也分五份,剩一条,拿走自己的一份。其他人都是如此。问他们至少捕鱼多少条。

##考虑最少。最后一个人将y条鱼分5份剩一条,那最小的y=6,
y = 6
while True:
    total = y
    enough = True
    for _ in range(5):
        if (total - 1) % 5 == 0:     ##按照题意 判断
            total = (total - 1) // 5 * 4  ##题意,一人分完后 鱼的数量
        else:
            enough = False
            break
    if enough:
        print(y)
        break
    y += 5

 贪婪法:

把问题求解时,总是做出在当前看来最好的选择,不追求最优解,快速找到满意解、

贪婪法例子:在对问题求解时,总是做出在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值