暴力解法,遍历所有子区间,超时,80%通过率
#include <bits/stdc++.h>
using namespace std;
int func(vector<int> &num){
int n = num.size();
int ret = -1;
int a ,b;
for(auto i = 0;i<n-1;++i){
a = max(num[i],num[i+1]);
b = min(num[i],num[i+1]);
ret = max(ret,a^b);
for(auto j = i+2;j<n;++j){
if(num[j] > a){
b = a;
a = num[j];
}
else if(num[j] < b){
;
}
else{
b = num[j];
}
ret = max(ret,a ^ b);
}
}
return ret;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int n;
cin >> n;
vector<int> num(n);
for(auto i = 0;i < n;++i)
cin >> num[i];
cout<<func(num)<<endl;
return 0;
}
AC的代码:
#include <bits/stdc++.h>
using namespace std;
int func(vector<int> &num){
int n = num.size();
int ret = -1;
for(auto i = 0;i<n;++i){
for(auto j = i-1;j>=0;--j){
if(num[j] > num[i]){
ret = max(num[i] ^ num[j],ret);
break;
}
}
for(auto j = i+1;j<n;++j){
if(num[j] > num[i]){
ret = max(num[i] ^ num[j],ret);
break;
}
}
}
return ret;
}
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int n;
cin >> n;
vector<int> num(n);
for(auto i = 0;i < n;++i)
cin >> num[i];
cout<<func(num)<<endl;
return 0;
}