#include<bits/stdc++.h>
using namespace std;
int f[1<<16]={},g[1<<16]={},h[1<<16]={};
int main(){
int n;
cin>>n;
for(int i=1;i<(1<<16);i++){
int t=(i&-i);
f[i]=f[i^t]+1;
}
for(int i=1;i<(i<<n);i++){
for(int j=i;j>0;j=i&(j-1)){
g[i]=max(g[i],g[j]+1);
}
}
for(int i=1;i<(1<<16);i++){
for(int j=0;j<n;j++){
h[i]+=(i>>j&1);
}
}
return 0;
}
我记得B站上是说:有多少个循环,时间复杂度就是多少。
但是按照这个说法:计算f数组的复杂度为O(n)(一个循环),但答案是O(n²)。
计算g数组的复杂度是O(n²)(双重循环),但答案是O(n³)。
计算h数组的复杂度为O(n²)(双重循环),但答案是O(n³)。
我想知道是我出错了,还是题目有问题,感谢各位dalao回答。