Pagini recente » Cod sursa (job #241975) | Cod sursa (job #1327013) | Cod sursa (job #511210) | Cod sursa (job #2567776) | Cod sursa (job #642426)
Cod sursa(job #642426)
#include <stdio.h>
#include <string.h>
char v[505];
int dp[505][505][26];
int main()
{
freopen("palm.in","r", stdin);
freopen("palm.out","w", stdout);
scanf("%s",v);
int max,n,i,d,j,k,l;
n=strlen(v);
for(i=0;i<n;i++)
dp[i][i][v[i]-'a']=1;
for(d=2;d<=n;d++)
{
for(i=0;i+d-1<n;i++)
{
j=i+d-1;
for(k=0;k<26;k++)
{
if(v[i]==v[j] && v[i]-'a'==k)
{
for(l=k;l<26;l++)
{
dp[i][j][k]=dp[i][j][k];
if (dp[i][j][k]<2+dp[i+1][j-1][l])
dp[i][j][k]=2+dp[i+1][j-1][l];
}
}
else
{
dp[i][j][k]=dp[i+1][j][k];
if (dp[i][j][k]<dp[i][j-1][k])
dp[i][j][k]=dp[i][j-1][k];
}
}
}
}
max=0;
for(i=0;i<26;i++)
if (max>dp[0][n-1][i])
max=dp[0][n-1][i];
printf("%d",max);
return 0;
}