求助
查看原帖
求助
221729
qsceszthn楼主2020/11/25 13:46

递归区间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);
}
2020/11/25 13:46
加载中...