给定一组输入和结果,我如何得到用于得到结果的等式?

问题描述 投票:1回答:2

我在这里看了一下,发现了类似的问题但没有解决方程。这是我想要做的。我需要能够确定一系列可能用于解决一组输入参数和结果的方程式。我将永远了解输入和结果。我需要找到一种方法来解决缺乏更好术语的解决方案。

例如:

输入参数:5,1,1,2

结果:8

我想输入这些数字和结果,得到类似的东西:

FirstNumber(5)*(SecondNumber(1)+ ThirdNumber(1)) - FourthNumber(2)= 8

FirstNumber(5)* FourthNumber(2) - SecondNumber(1) - ThirdNumber(1)= 8

显然它可能很复杂,并且给定更多数字可能有许多可能的解决方案。我的一般问题是围绕可行性。

java math
2个回答
3
投票

实际上要解决这个问题非常困难。

首先 - 您必须能够使用+-*/()解决任何等式。怎么做?您必须使用这些运算符创建树状结构,并能够计算结果。

如果您想象树,它看起来像这样:Tree

完成此任务后,您可以开始生成可能发生的所有可能性。 Backtracking实际上非常有用,因为它会自动删除不会产生任何结果的路径,并且通过适当的实现,它会找到所有可能的解决方案。


0
投票

为了获得所有可能的线性方程的集合,我将尝试排列而不重复输入,除了结果(忽略可能的相同输入)和从所有操作符的每个组合中取得的排列,其中G是在输入之间的间隙数G的时间数字填补数字之间的间隙,然后尝试每个位置和大小多于一个小于N的“()”内的数字,其中N是排除结果的输入数。检查此链接中的答案,了解如何在java Generating all permutations of a given string中获取排列

© www.soinside.com 2019 - 2024. All rights reserved.