#include<iostream>
using namespace std;
int f[35];
int main(){
int n;
cin>>n;
int b;int k=0;
for(int i=1;i<=n;++i){
cin>>b;
for(int j=0;j<=30;++j){
if(((1<<j)&b)) k=max(f[j]+1,k);
}
for(int j=0;j<=30;++j){
if(((1<<j)&b)) f[j]=max(k,f[j]);
}
}
cout<<k<<endl;
return 0;
}
用 1 1 2 2 这组数据显而易见应该返回长度为2
而我的代码答案是3,但是洛谷直接AC
我认为有问题的地方:k没更新??