AcWing 3365. 现代艺术 3
原题链接
困难
作者:
贴着土地生活
,
2021-04-14 21:31:57
,
所有人可见
,
阅读 354
算法1
区间dp
时间复杂度
参考文献
C++ 代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 310;
int f[N][N];
int n;
int p[N];
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; ++ i) scanf("%d", &p[i]);
for(int len = 1; len <= n; ++ len)
for(int l = 1; l + len - 1 <= n; ++ l)
{
int r = l + len - 1;
if(len == 1)
{
f[l][r] = 1;
continue;
}
f[l][r] = 0x3f3f3f3f;
if(p[l] != p[r])
for(int k = l; k < r; ++ k)
f[l][r] = min(f[l][r], f[l][k] + f[k + 1][r]);
else f[l][r] = f[l + 1][r];
}
printf("%d", f[1][n]);
return 0;
}