所以我有一个包含一些值的列表,例如[230, 67, 34, 60, 2, 10]
还有一个操作列表[operations.add, operations.sub, operations.mul, operations.div]
和result number
,我事先就知道了。你知道吗
找到所有可能给出结果的数学表达式的最佳方法是什么。你知道吗
例如,如果结果是154
,则一种可能的解决方案是60*2+34
。你知道吗
我在设计这个算法时遇到的问题是,我事先不知道表达式将使用哪些值和运算,哪些不使用,或者可能全部使用。
如果您能提供一些python代码,我们将不胜感激。
提前谢谢
您可以创建一个表示所有可能组合的树,其中一个节点表示数字或运算符。然后,通过对生成的树执行DFS或BFS,您可以找到所有节点,这样由从根到节点的路径表示的表达式计算出所需的值。下面是Python中的代码:
输出:
代码相当粗糙,可能需要改进。注意,整数除法将出现在代码中。另外请注意,当您向原始列表中添加更多数字时,程序将以指数级的速度变慢。你知道吗
相关问题 更多 >
编程相关推荐