题目传送门
#include<bits/stdc++.h>
using namespace std;
long long n,a[310],f[310][310],j;
int main()
{
scanf("%lld",&n);
memset(f,0x3f,sizeof(f));
f[0][0]=1;
for(long long i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
f[i][i]=1;
}
f[n+1][n+1]=1;
for(long long c=2;c<=n;c++)
{
for(long long i=1;i<=n;i++)
{
j=i+c-1;
if(j>n)
{
break;
}
if(a[i]==a[j])
{
f[i][j]=min(f[i+1][j],f[i][j-1]);
}
for(long long k=i;k<j;k++)
{
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
}
}
}
cout<<f[1][n];
return 0;
}
已经无语掉了。
思路和题解一样,代码也没有结构上的问题。
第一个测试点就是题目样例,我过了,可是提交就是0分。
求助!