尝试java中的所有可能性

时间:2012-05-03 16:36:46

标签: java

我有4个整数(a,b,c,d)和3个表示数学运算符的字符串(+, - ,*,/)。 我想检查是否可以从这些整数和字符串中生成一定数量(e)。

例如:

a + b * c - d == e;

每个int只能使用一次,运算符可以多次使用,但每2个int之间只能使用一次。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

首先将问题分解成小块。

我会将其分解如下:

  1. 计算4个整数的所有排列。应该有4个!(24)这些。 (查找生成排列)

  2. 计算可能发生的3个操作的所有组合。那里 应该是这些中的3 * 3(9)。 (查找生成排列 重复)。

  3. 现在您有了整数的顺序,并且操作的顺序尝试并计算e。 (交织组合:即1个来自整数,1个来自操作,2个来自整数,第二个来自操作......)这应该用所有int permeations和所有操作组合来完成。

  4. 在评估了所有方程式(其中216个)后,如果它们都不等于e,则没有解决方案。