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

时间:2017-12-20 23:16:13

标签: java math

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

例如:

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

结果:8

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

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