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