String 该算法的时间复杂度是多少,如何计算? #包括“bits/stdc++.h” 使用名称空间std; int main() { int n; cin>>n; 对于(int i=1;i
由于String 该算法的时间复杂度是多少,如何计算? #包括“bits/stdc++.h” 使用名称空间std; int main() { int n; cin>>n; 对于(int i=1;i,string,algorithm,c++11,data-structures,time-complexity,String,Algorithm,C++11,Data Structures,Time Complexity,由于j循环独立于其他指数,我们可以将其因子化,并在最后简单地相乘。j的值在循环的每次迭代后呈指数增长,这意味着所需的循环数为log3(n/2)。对于这个简单的循环形式,有无数的证明,所以我不在这里推导它 现在,对于带有i和k的两个循环: 停止条件k*k您从哪里获得log3的?它将是O(n^2.5)试图从数值测试中找到时间复杂度关系,特别是在测试数量如此之少的情况下,就像试图用锤子建造纽约市一样。任何合理的工作量都不会有任何结果。数值测试是在你通过代数推导出解之后进行的。 #include "b
j
循环独立于其他指数,我们可以将其因子化,并在最后简单地相乘。j
的值在循环的每次迭代后呈指数增长,这意味着所需的循环数为log3(n/2)
。对于这个简单的循环形式,有无数的证明,所以我不在这里推导它
现在,对于带有i
和k
的两个循环:
- 停止条件
k*k您从哪里获得
的?它将是log3
试图从数值测试中找到时间复杂度关系,特别是在测试数量如此之少的情况下,就像试图用锤子建造纽约市一样。任何合理的工作量都不会有任何结果。数值测试是在你通过代数推导出解之后进行的。O(n^2.5)
#include "bits/stdc++.h" using namespace std; int main() { int n; cin>>n; for(int i=1; i<=n; i=i+2){ for(int j=1; j<=n/2; j=j*3){ for(int k=i; k*k<=n; k=k+1){ cout<<"YES"<<endl; } } } return 0; }
T = function(n) { var m = 0; for (var i = 1; i <= n; i += 2) for (var j = 1; j <= n / 2; j *= 3) for (var k = i; k * k <= n; k++) m++; return m; }