Pagini recente » Cod sursa (job #2136641) | Cod sursa (job #1658802) | Cod sursa (job #1837719) | Cod sursa (job #2839458) | Cod sursa (job #641066)
Cod sursa(job #641066)
#include <cstdio>
#include <iostream>
#include <string.h>
using namespace std;
char v[505];
int dp[505][505][26];
int main()
{
freopen("palm.in","r", stdin);
freopen("palm.out","w", stdout);
scanf("%s",v);
int n=strlen(v);
for(int i=0;i<n;i++) dp[i][i][v[i]-'a']=1;
for(int d=2;d<=n;d++)
{
for(int i=1;i+d-1<=n;i++)
{
int j=i+d-1;
for(int k=0;k<26;k++)
{
if(v[i]==v[j] && v[i]-'a'==k)
{
for(int k1=k;k1<26;k1++)
dp[i][j][k]=max(dp[i][j][k], 2+dp[i+1][j-1][k1]);
}
else dp[i][j][k]=max(dp[i+1][j][k],dp[i][j-1][k]);
}
}
}
int maxm=0;
for(int i=0;i<26;i++) maxm=max(maxm,dp[1][n][i]);
printf("%d",maxm);
return 0;
}