我一直在考虑如何找到一种有效的算法来找到对某个答案进行求/减/除/乘的任何数字组合。
例如
Input:
Number set = {4,3,7,8}
Operator set = {+.-.*,/}
Answer = 68
Output:
Equations = {((4*3)+(7*8)),((4+4)*7)+(4*3), etc}
据我所知,可能存在无限的解决方案。什么是获得前10个输出的好方法?
我的尝试(蛮力):
按顺序排列数字(例如4个数字,4个运算符)
n1 o1 n2 o2 n3 o3 n4 (eg. 4 + 3 * 7 + 8) (4^4 * 4^3 combinations)
然后,找到操作的顺序。 (eg. (n1 o1 n2) o2 (n3 o3 n4) )
(3!组合)
然后,将答案与提供的答案进行比较,并检查是否匹配。
组合数量呈指数增长。 (k^k * 4*(k-1) * (k-1)!)
组合,如果我没错。
我怎样才能有效地做到这一点?
感谢您的帮助:)