美文网首页
穷举算法

穷举算法

作者: 简子逍 | 来源:发表于2019-07-23 23:17 被阅读0次

穷举算法思想

将问题的所有可能的答案一一列举,然后根据条件判断答案是否合适,保留合适的,丢弃不合适的。

算法步骤:

  1. 解的可能范围,不能遗漏任何一个真正解,也要避免有重复。
  2. 判断是否是真正解的方法。
  3. 使可能解的范围降至最小,以便提高解决问题的效率。

计算 24 点

根据任意 4 个数,4 种运算符(加、减、乘、除),计算 24 点,数字只能用 1 次,运算符可重复使用。

import itertools

def twentyfour(list):
    for nums in itertools.permutations(list):
        for ops in itertools.product('+-*/', repeat=3):
            # 构造四种中缀表达式 (bsd)
            bds1 = '({0}{4}{1}){5}({2}{6}{3})'.format(*nums, *ops)  # (a+b)*(c-d)
            bds2 = '(({0}{4}{1}){5}{2}){6}{3}'.format(*nums, *ops)  # ((a+b)*c)-d
            bds3 = '{0}{4}({1}{5}({2}{6}{3}))'.format(*nums, *ops)  # a/(b-(c/d))
            bds4 = '({0}{4}({1}{5}{2})){6}{3}'.format(*nums, *ops)  # (a/(b+c))-d

            for bds in [bds1, bds2, bds3, bds4]:
                try:
                    if abs(eval(bds) - 24.0) < 1e-10:
                        return bds
                except ZeroDivisionError:  # 零除错误
                    continue

    return 'Not found!'

print(twentyfour([1,2,6,90]))  # (90/(1+2))-6

计算平方根

计算 2 的平方根,误差精确到 0.0001 内。

x = 2
epsilon = 0.0001
step = epsilon/10
numGuesses = 0
ans = 1

while abs(ans**2 - x) >= epsilon and ans <= x:
    ans += step
    numGuesses += 1

print('numGuesses =', numGuesses)  # numGuesses = 41418
print('ans =', ans)  # ans = 1.4141800000027134

相关文章

  • 穷举算法

    穷举算法: 将所有可能情况的数据结果都罗列出来,然后对其进行条件判断 举例: 有红、白、黑三种球若干个,其中红、白...

  • 穷举算法

    穷举算法思想 将问题的所有可能的答案一一列举,然后根据条件判断答案是否合适,保留合适的,丢弃不合适的。 算法步骤:...

  • 穷举算法

  • (一)最大子列和的逐步优化 JS实现

    最大子列和//1,算法一,去穷举 O(n^3) 2.算法二,穷举优化O(n^2),穷举第三层可以省略,因为都是之前...

  • 排列穷举算法

    今天看到一篇博文 玩个算法题:1-5的排列组合问题 觉得挺有意思。鉴于博主写的是死代码,于是决定自己实现一个动态排...

  • 基本算法思想之穷举法

    穷举算法是最基本的算法思想,我们通过一个简单的例子来看看穷举算法的应用。鸡兔同笼问题: 今有鸡兔同笼,上有三十五头...

  • 程序设计的16种类型

    Dynamic Programming(动态规划) Greedy(贪心算法) Complete Search(穷举...

  • 芯片物理攻击平台 ChipWhisperer 初探

    前言 传统基于穷举或纯数学理论层面的分析,对于现代高强度加密算法而言,算力有限导致无法实现穷举,算法的复杂性也无法...

  • 枚举(穷举)算法思想

    枚举法,也称为穷举法,是编程中常用的算法之一。在解决某些问题时,可能无法按照一定的规律从众多答案中找出正确的解。这...

  • 回溯=试探=穷举算法

    回溯法:试探,从一条路往前走,能进则进,不能则退回上一步,换一条路; 穷举问题的通用算法 深度优先向下构造,约束函...

网友评论

      本文标题:穷举算法

      本文链接:https://www.haomeiwen.com/subject/lcmzlctx.html