Pagini recente » Cod sursa (job #841159) | Cod sursa (job #1101260) | Cod sursa (job #2807971) | Cod sursa (job #1516937) | Cod sursa (job #642432)
Cod sursa(job #642432)
#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);
n--;
for(i=0;i<=n;i++)
dp[i][i][v[i]-96]=1;
for(d=2;d<=n+1;d++)
{
for(i=0;i+d-1<=n;i++)
{
j=i+d-1;
for(k=0;k<=25;k++)
{
if(v[i]==v[j] && v[i]-96==k)
{
for(l=k;l<=25;l++)
{
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<=25;i++)
if (max<dp[0][n-1][i])
max=dp[0][n-1][i];
printf("%d",max);
return 0;
}