while(n > 0){
while(n > 0){
for(int i = 0; i < m; i++){
cout << ":) ";
m--;
}
n--;
}
n--;
}
如何计算复杂性? n
是任何自然数。
好的,我正在纠正我的代码:
while(n > 0){
while(s > 0){
for(int i = 0; i < m; i++){
cout << ":) ";
m--;
}
s--;
}
n--;
}
现在,如何计算复杂性?
答案 0 :(得分:2)
外部while循环仅运行一次,因为内部while循环完成时n等于0且外循环不再运行。
因此,复杂性仍然是O(n * m)
编辑:如果您打算在外部循环中使用不同的循环变量(比如k),复杂性将为O(k * n * m)
答案 1 :(得分:1)
计算嵌套循环复杂性的正式方式(基于更正后的代码):
答案 2 :(得分:0)
O(n*m)
这相当于:
while(n>0)
{
for(int i=0; i < m; i++)
{
}
n--;
}
因为正如所指出的,while
循环的终止条件是相同的,当内部循环终止时,外部while
循环也终止。
答案 3 :(得分:0)
我认为你的意思是三个不同的变量。
第一个while(n&gt; 0)循环正好运行n个步骤,
第二个while(n&gt; 0)循环再次运行n个步骤,
for(int i = 0; i&lt; m; i ++)循环运行M / 2步,因为在每一步,i递增,m递减,使for循环等效于
for(int i = 0; i < m; i+=2){
cout << ":) ";
}
所以时间复杂度为O(N * N * M / 2)= O(N ^ 2 * M)
如果while循环意味着相同,那么外部循环只是一个副本,并且什么都不做。
因此,这种情况下的时间复杂度为O(N * M / 2)= O(N * M)