【发布时间】:2017-08-16 18:36:40
【问题描述】:
这个问题刚刚在我脑海中浮现:
函数G(m)定义如下:
a) 如果 m
b) 如果 m > 100 则 G(m) = m – 10
根据上面的问题,如何设计一个计算G(m)的常数时间算法?
【问题讨论】:
-
也许是动态规划?将 m = 1 到 100 的结果存储在一个数组中。因此,计算 G(m 100) 永远是常数时间。
-
m可以是负数还是零? -
我们不应该为你做作业。但是我会给你一个非常重要的提示,你可以使用基本的算术和离散推理来假设对于 m + ((floor((101 - m)/11) + 1) * 11) - 10 而不需要任何迭代。因为另一种情况也是 O(1) 操作,所以您最多得到 O(1)。 Edit2:错误太多。那里。固定
-
我其实没想到你会完成我的作业。我只是想向我解释实际被问到的问题。编辑:即使有迭代,时间复杂度仍然是 O(1),因为循环将运行有限的时间。这是正确的吗?
-
@MananTyagi:它为
m的所有值形成了一个AP。当我简化时,它都以 91 结束。无论m的值是多少,最终都会以 G(101) 结束,并且计算结果为 91。因此,G(m)= 91 对于@ 的所有值987654326@这里。