找到答案的数字组合的高效算法

时间:2014-12-24 15:23:38

标签: algorithm math combinations depth-first-search

我一直在考虑如何找到一种有效的算法来找到对某个答案进行求/减/除/乘的任何数字组合。

例如

Input:
Number set = {4,3,7,8}
Operator set = {+.-.*,/}
Answer = 68

Output:

    Equations = {((4*3)+(7*8)),((4+4)*7)+(4*3), etc}
  • 不重复(3 * 7/7 = 3),否则无限循环
  • 数字集中的所有数字必须至少使用一次
  • 并非所有运营商都必须使用

据我所知,可能存在无限的解决方案。什么是获得前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)!)组合,如果我没错。

我怎样才能有效地做到这一点?

感谢您的帮助:)

0 个答案:

没有答案