算法初步

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

 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倍。

posted @ 2018-01-20 22:22  当年在远方  阅读(349)  评论(0编辑  收藏  举报