一个疑点...
查看原帖
一个疑点...
654763
smallpeople楼主2024/10/4 10:37
#include <bits/stdc++.h>
using namespace std;

int n,ans;
int a[250];
int f[250][250];

int main()
{
	cin>>n;
	for(int i = 1;i <= n;i ++)
		cin>>a[i],f[i][i] = a[i];
	
	for(int len = 2;len <= n;len ++)
		for(int i = 1;i + len - 1 <= n;i ++)
		{
			int l = i,r = i + len - 1;
			for(int k = i;k < r;k ++)
				if(f[l][k] == f[k + 1][r] && f[l][k])
					f[l][r] = max(f[l][r],f[l][k] + 1);
		}
	
	for(int i = 1;i <= n;i ++)
		for(int j = 1;j <= n;j ++)
			ans = max(ans,f[i][j]);
	cout<<ans<<'\n';
	return 0;
}

(本人已A,代码如上) 疑问:f[l][r]存储max,后续在更新时用f[l][r]更新(即[l,r]的max)是否不妥?会不会出现不用max才能更新,且全部更新完后新的max比(f[l][r])max更大的情况

2024/10/4 10:37
加载中...