zoukankan      html  css  js  c++  java
  • 算法初步

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

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

  • 相关阅读:
    linux文件操作
    文件和目录维护
    随心而记
    开学了
    基本逻辑门电路原理
    ubuntu搭建ftp服务
    中断
    数码管
    字,寻址和移位
    Error: Could not find or load main class resourcemanager
  • 原文地址:https://www.cnblogs.com/wholeworld/p/8322181.html
Copyright © 2011-2022 走看看