算法初步

解决一个问题的思路就是所谓算法

 a+b+c=1000,a*a+b*b=c*c 求a,b,c

最原始  最暴力的算法是

1 for a in range(0,1001):
2   for b in range(0,1001):
3     for c in range(0,1001):
4                 if a+b+c=1000 and a**2+b**2=c**2:
5                     print("a,b,c :%d,%d,%d",%(a,b,c))

在实际运行求值的时候,我们会发现上述算法确实能求出结果,但是问题是特别耗时,我的电脑大约需要花费4分钟。

 

一种优化算法是

 for a in range(1,1001):
   for b in range(1,1001):
              c=1000-a-b
              if a**2+b**2=c**2:
                  print("a,b,c :%d,%d,%d",%(a,b,c))    

这个算法里面 c就不需要再从0到1000遍历试探了,在我的电脑里面耗时约1秒钟

 为什么差距这么大呢,我们将一个基本运算 算作一个操作。在第一组算法里面一共有1000*1000*1000*n个操作,在第二组算法里面一共有1000*1000*m个操作,显然第一个的基本操作要比第二个多接近1000倍。

转载于:https://www.cnblogs.com/wholeworld/p/8322181.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值