rt.
const int INF=0x3f3f3f3f;
const ll LNF=0x3f3f3f3f3f3f3f3f;
const int N=300;
int n;
int a[N];
int f[N][N];
void solve(){
cin>>n;
rep(i,1,n) cin>>a[i];
rep(i,1,n) f[i][i]=a[i];
rep(l,2,n){
rep(i,1,n-l+1){
int j=i+l-1;
rep(k,i,j-1){
if(f[i][k]==f[k+1][j]){
f[i][j]=max(f[i][j],f[i][k]+1);
}
f[i][j]=max(f[i][j],max(f[i][k],f[k+1][j]));
}
}
}
cout<<f[1][n];
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
删除部分为又臭又长的没用的东西。