【发布时间】:2014-08-08 08:03:06
【问题描述】:
我已经非常擅长计算时间复杂度,但仍然对如何确定指数时间算法感到困惑。下面的算法具有最坏情况下的运行时间 O(k^n)。他们是如何得到这个值的?第一个 for 循环花费 n 时间,第二个 for 循环花费 k 时间,第三个带有 q 的 for 循环令人困惑。如果运行时间是 n * k * q-something,他们是如何得到 O(k^n) 的?
int exp(k, n) {
power = 1
for i = 1 to n {
newpower = 0
for j = 1 to k {
for q = 1 to power {
newpower++
}
}
power = newpower
}
return (power)
}
【问题讨论】:
-
第三个 for 循环在哪里?
-
"第三个 for 循环在哪里?"他说这很棘手。
-
永远不要在你累死的时候发帖。更新了代码。