【发布时间】:2012-02-15 20:07:30
【问题描述】:
让我从一个例子开始 - 我有一个从 1 到 9 的数字范围。假设我想要的目标数字是 29。 在这种情况下,所需的最小操作数将是 (9*3)+2 = 2 次操作。同样,对于 18,最小操作数为 1 (9*2=18)。 我可以使用 4 种算术运算符中的任何一种 - +、-、/ 和 *。
如何以编程方式找出所需的最少操作数? 提前感谢您提供的任何帮助。
澄清:仅整数,计算中不允许小数。即以下无效(来自下面的 cmets): ((9/2) + 1) * 4 == 22
我必须承认我没有彻底考虑这一点,但就我的目的而言,十进制数字是否出现在计算中间并不重要。 ((9/2) + 1) * 4 == 22 是有效的。很抱歉造成混乱。
【问题讨论】:
-
有一个简单的回溯解决方案,但它是指数级的。你有时间复杂度限制吗?
-
@KennyTM - tnx。我应该用一个更好的例子。
-
@amit - 没有时间复杂度限制。
-
仅整数算术,我想?即 ((9/2) + 1) * 4 == 22 怎么样? 9/2 允许吗?澄清问题。
-
其次,“仅整数”究竟是什么意思?这是否意味着完全禁止
9/2?或者这是否意味着9/2被假定为4而不是4.5?