数据结构和算法-01.算法引入

算法引入

# CY3761 | 2021-11-29 11:38

# 选择合适的数据结构, 设计一个巧妙的算法, 可以让程序的执行时间快上不少, 消耗的资源也会得到降低

# 如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?

# 解题4步
# 分析需求 设计算法 代码实现 验证结果

# 分析需求
# 求出符合 a+b+c=1000 且 a^2+b^2=c^2 (a,b,c 为自然数) 所有a、b、c可能的组合
# 设计算法
# 尝试 a b c 的所有组合 判断当前组合是否满足以上条件 满足就输出 枚举法

# 算法是一系列解决问题的清晰指令,是计算机处理信息的本质!
# 算法是独立存在的一种解决问题的方法和思想!

# 算法特性
# 输入项: 算法具有0个或多个输入
# 输出项: 算法至少有1个输出
# 有穷性: 算法必须能在有限个步骤之后终止,并且需要在可接受的时间内
# 确切性: 算法的每一步骤必须有确切的定义
# 可行性: 算法的每一步都是可行的


# 代码执行多久
import time
import types


def handler(algo):
    print('-' * 80)
    stime = time.time()
    
    if isinstance(algo, types.FunctionType):
        c = algo()
    
    etime = time.time()
    
    print('执行时间', (etime - stime), '循环次数', c)


# 按照老师的3个循环
# 好慢呀
def algo_01():
    s1 = 0
    s2 = 1000 + 1
    co = 0
    
    for a in range(s1, s2):
        for b in range(s1, s2):
            for c in range(s1, s2):
                co += 1
                if a + b + c == 1000 and a ** 2 + b ** 2 == c ** 2:
                    print(f'a = {a}, b = {b} c = {c}')
    
    return co


def algo_02():
    s1 = 0
    s2 = 1000 + 1
    co = 0
    
    for a in range(s1, s2):
        for b in range(s1, s2):
            co += 1
            c = 1000 - a - b
            
            if a ** 2 + b ** 2 == c ** 2:
                print(f'a = {a}, b = {b} c = {c}')
    
    return co


handler(algo_01)
handler(algo_02)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CY3761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值