c++ - 找到精确或最接近的解决方案

标签 c++ algorithm

<分区>

如何编写一个程序来计算由给定数字组成的数学表达式,该表达式的计算结果也是给定的结果?如果不存在计算出准确结果的表达式,则计算最接近的结果。 例子: 给你一个随机结果:520,给你 6 个随机整数:2、4、1、6、15、44。使用操作数 +、-、*、/和 6 个随机整数,找到给定结果 520 或最接近 520 的数字。 有什么想法吗?

最佳答案

这是一个 NP-hard 问题。你应该暴力破解所有的可能性来想出一个解决方案。如果你想减少时间,你可以尝试寻找一种启发式的方法来接近一个可能的解决方案(并减少解决的时间)。但是,它可能不像开发蛮力方法那么容易。

输入量大时会比较费时。

如果想更进一步,这里有关键词:np, np-complete, np-hard, complexity, heuristic

关于c++ - 找到精确或最接近的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25441614/

相关文章:

c++ - gcov 和 switch 语句

c++ - 如果直接使用,constexpr 函数参数被认为是 constexpr,但如果用于调用另一个 constexpr 函数则不是

algorithm - 如何在球面上生成 Perlin 噪声?

algorithm - 将后序二叉树遍历索引转换为层序(广度优先)索引

algorithm - 算法如何解释有向节点图

c++ - std::stoi 实际上可以安全使用吗?

c++ - 将参数从模板转发到不同类型的函数

c++ - C/C++ GetAsyncKeyState() 组合键

c++ - 分离轴定理 : Calculating the MTV for Polygon & Line Segment

c - 如何判断所有括号是否平衡(C)