递归区间dp,超时了,是不是写假了
#include <bits/stdc++.h>
using namespace std;
const int N=300;
int n,a[N],f[N][N],ans;
int dp(int l,int r)
{
if(f[l][r])
{
return f[l][r];
}
for(int i=l;i<r;++i)
{
int x=dp(l,i),y=dp(i+1,r);
if(x==y)
{
f[l][r]=max(f[l][r],x+1);
ans=max(f[l][r],ans);
}
}
return f[l][r];
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d",&f[i][i]);
}
dp(1,n);
printf("%d",ans);
}