我在这里看了一下,发现了类似的问题但没有解决方程。这是我想要做的。我需要能够确定一系列可能用于解决一组输入参数和结果的方程式。我将永远了解输入和结果。我需要找到一种方法来解决缺乏更好术语的解决方案。
例如:
输入参数:5,1,1,2
结果:8
我想输入这些数字和结果,得到类似的东西:
FirstNumber(5)*(SecondNumber(1)+ ThirdNumber(1)) - FourthNumber(2)= 8
FirstNumber(5)* FourthNumber(2) - SecondNumber(1) - ThirdNumber(1)= 8
显然它可能很复杂,并且给定更多数字可能有许多可能的解决方案。我的一般问题是围绕可行性。
实际上要解决这个问题非常困难。
首先 - 您必须能够使用+-*/
和()
解决任何等式。怎么做?您必须使用这些运算符创建树状结构,并能够计算结果。
完成此任务后,您可以开始生成可能发生的所有可能性。 Backtracking实际上非常有用,因为它会自动删除不会产生任何结果的路径,并且通过适当的实现,它会找到所有可能的解决方案。
为了获得所有可能的线性方程的集合,我将尝试排列而不重复输入,除了结果(忽略可能的相同输入)和从所有操作符的每个组合中取得的排列,其中G是在输入之间的间隙数G的时间数字填补数字之间的间隙,然后尝试每个位置和大小多于一个小于N的“()”内的数字,其中N是排除结果的输入数。检查此链接中的答案,了解如何在java Generating all permutations of a given string中获取排列