【发布时间】:2013-12-19 23:53:31
【问题描述】:
我无法确定以下算法的运行时间。
bool IsMeasurable(int target, vector<int> & weights, int index) {
if (target == 0) return true;
if (index >= weights.size()) return false;
return (IsMeasurable(target-weights[index],weights,index+1) ||
IsMeasurable(target+weights[index],weights,index+1) ||
IsMeasurable(target,weights,index+1));
}
bool IsMeasurable(int target, vector<int> & weights) {
return IsMeasurable(target,weights,0);
}
该函数确定它是否可以在给定权重向量的情况下测量给定的目标权重。我们从向量中的第一项开始,递归地调用函数,加上、减去和保留具有目标权重的当前项。
我知道遍历向量需要 O(n) 时间,但是我如何考虑递归调用来确定运行时间?
【问题讨论】: