【发布时间】:2015-10-06 18:25:28
【问题描述】:
如果你有这样的算法,复杂度是多少:
int get(const std::vector<unsigned int>& v, int N)
{
int a = 0;
for(int i = 0; i < N; ++i)
for(int j = 0; j < v.size(); ++j)
for(int k = 0; k < v[j]; ++k)
a += k * v[j];
return a;
}
除了缺少有用性之外,如果一个因素变化如此之大,您会在复杂性中投入什么?我的意思是,肯定是O(N * V * ?),当V = v.size(),但是然后呢?
【问题讨论】:
-
你对
v的元素范围有什么提示吗?如果没有进一步的上下文,这可能很难回答。当然它以std::numeric_limits<int>::max()为界 -
不,可以是从零到
std::numeric_limits<unsigned int>::max()的任何值
标签: c++ time-complexity complexity-theory