您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

Python基础算法之快速求解

时间:2020-08-03 14:24:24  来源:  作者:

Python这么强,能不能让它解决一下难倒无数人的奇葩数学题呢?今天我们就用Python求解几个实际的数学题来了解一下Python的一些基本的算法。如果你刚好入门Python,懂一些Python的基本语法,那么刚好可以了解一下,对你的算法提升可能有一定帮助。本文难度为:入门。所以高手请忽略。

Python基础算法之(快速求解)

 

暴力求解

暴力求解是已知最古老的算法之一,在科学应用中有其特殊的优势,尤其是计算机技术的出现,使其解题优势变得更加明显,暴力求解或许是解决问题的算法中最“简单粗暴”的方式了,它是计算机解逻辑类题的基础方法,由于其实现较为简单,效率高,所以算法使用已经非常普遍。

问题1:鸡兔同笼,鸡兔共78只,脚200只,问:鸡和兔各多少只?

典型的鸡兔同笼问题,曾几何时,那是我们小学数学时代的噩梦!而今天,用Python暴力求解完全可以不费吹灰之力计算结果。

for ji in range(1,79):
    tu=78-ji
    if ji*2+tu*4==200:
        print('鸡有{}只,兔有{}只'.format(ji,tu))
        break

运行结果:

鸡有56只,兔有22只

注:在计算出结果后使用break打断循环,实现短路求值,避免多余的无效计算,可以有效的提升计算效率。

Python基础算法之(快速求解)

用Python快速求解鸡兔同笼问题


问题2:鸡兔同笼,兔比鸡少15只,共有脚282只,问:鸡和兔各多少只?

鸡兔同笼问题的第二类。

for ji in range(15,100):
    tu=ji-15
    if ji*2+tu*4==282:
        print('鸡有{}只,兔有{}只'.format(ji,tu))
        break

运行结果:

鸡有57只,兔有42只

问题3:小明用10元钱正好买了20分和50分的邮票共35张,求这两种邮票名买了多少张?

鸡兔同笼问题的类似问题。

for a in range(35):
    b=35-a
    if a*2+b*5==100:
        print('20分邮票{}张,50分邮票{}张'.format(a,b))
        break

运行结果:

20分邮票25张,50分邮票10张

问题4:储蓄罐里共2分和5分硬币70枚,小刚数了一下,一共有194分,求两种硬币各有多少枚?

for a in range(70):
    b=70-a
    if a*2+b*5==194:
        print('2分硬币{}枚,5分硬币{}枚'.format(a,b))
        break

运行结果:

2分硬币52枚,5分硬币18枚

问题5:一个运输队包运10000只瓶子,每100只可得运费1元5角,如损坏一只不但不给运费,还要赔偿2角。这个队共得运费146元5角6分,损坏了几只瓶子?

最烦这种难以理解,逻辑烧脑的题了,想当年学生时代做这种题的时候可没少挨打。

for a in range(10000):
    b=10000-a
    if b*0.015-a*0.2==146.56:
        print('共坏了%d个瓶子'%a)
        break

运行结果:

共坏了16个瓶子

问题6:物流公司里有A、B两种车,有一批大小一样的箱子。假如A车运来4车货物,用B车装走,B车装满了6车后还剩下2件;假如A和B两种车一起装货,A装满6车,B装满7车,一共能装83件。请问:A车和B车每车各能装几件货物?

要是当年上学,看到两个未知数,我基本就放弃抵抗了。现在,利用and条件暴力求解两个未知数轻而易举。

for a in range(100): 
    for b in range(100):
        if a*4-b*6==2 and a*6+b*7==83:  
            print('A车每车能装{}件,B车每车能装{}件'.format(a,b))
            break

运行结果:

A车每车能装8件,B车每车能装5件

问题7:一批钢材,用小卡车装载要45辆,用大卡车装载只要36辆。已知每辆大卡车比每辆小卡车多装4吨,那么这批钢材有多少吨?

分析:我们只要计算出小卡车能装多少吨就可以算出总数。

for x in range(50):
    if 45*x==36*(x+4):
        print('一共有{}吨'.format(45*x))
        break

运行结果:

一共有720吨

问题8:已知某座桥长800米,一列火车从桥上通过,测得火车从刚上桥到完全通过耗时45秒,整列火车都在桥上的时长是35秒,求火车的速度和长度。

换个思路变成二元一次方程组 ,设火车速度为x,长度为y。

for x in range(100):
    for y in range(200):
        if 45*x==800+y and 35*x==800-y:
            print('火车速度是{}米每秒,火车长度{}米'.format(x,y))
            break

运行结果:

火车速度是20米每秒,火车长度100米

问题9:看图回答衣服与篮球价格问题。

Python基础算法之(快速求解)

衣服与篮球价格问题

还是按照以上的方法,将其写成代码即可,假设衣服价格x,篮球价格y。

for x in range(100):
    for y in range(100):
        if 3*x+2*y==295 and 5*x+4*y==515:
            print('衣服单价是{}元,篮球单价是{}元'.format(x,y))
            print('2件衣服加3个篮球一共{}元'.format(2*x+3*y))
            break

运行结果:

衣服单价是75元,篮球单价是35元
2件衣服加3个篮球一共255元

通过以上题解你应该明白了Python暴力求解的基本算法,是不是非常简单又方便?写代码是不是比解数学题容易多了?毕竟代码我们只要把算法过程写完丢给电脑去执行就可以了,而数学题是需要自己一步一步去算的。其实还有更多更复杂的问题都可以用暴力求解来快速解决,还可以结合多种算法解决问题,需要结合实践多练习。



Tags:Python 算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Python这么强,能不能让它解决一下难倒无数人的奇葩数学题呢?今天我们就用Python求解几个实际的数学题来了解一下Python的一些基本的算法。如果你刚好入门Python,懂一些Python的...【详细内容】
2020-08-03  Tags: Python 算法  点击:(56)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(9)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(19)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(13)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(37)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条