public static int numOccurrences(int n){
int count = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(i == j) {
continue;
}
if(strings[i] == strings[j]){
count++;
}
}
}
return count;
}
int count = 0; //1 time
int i = 0; //1 time
while(i < n) //n times
int j = 0; //n times
while(j<n) //n*n times
if(i == j) //n*n times
continue; //n times
if(strings[i] == strings[j]) //n*n+2 times
count++; //n*n times
i++ //n*n times
j++ //n*n times
return count; //1 time
我们在一个带有if语句的嵌套循环中,我想知道如果我上面的内容不正确,我如何计算操作?
另外,对于行if(strings[i] == strings[j])
,我计算1为测试,1为抓取strings[i]
,1为strings[j]
。它是否正确?
我的最终答案是: f(x)= 5n ^ 4 + 10n ^ 3 + 3n + 3
我真诚地道歉,如果这是非常不正确的!
答案 0 :(得分:0)
我想分享我的答案,万一有人偶然发现这篇文章。 我今天从导师那里发现的一种产生多项式的更容易方法是计算每个操作,但不是写出循环内的所有内容都发生了n * n次,我们只需要计算单个步骤并在n中嵌套那些单独的步骤(如i ++)。
例如:
int count = 0; //1
int i = 0; //+ 1
while(i < n) //+ n(
i++; //+ 1
int j = 0; //+ 1
while(j < n) //+ n(
j++ //+ 1
if(i == j) //+ 1
continue; //+ 1
if(strings[i] == strings[j]) //+ 3
count++; //+ 1
return count; //+ 1
将它们全部加起来,得到= 1 + 1 + n(1 + 1 + n(1 + 1 + 1 + 3 + 1))+ 1
简化= 6n ^ 2 + 2n + 3