Pagini recente » Cod sursa (job #384948) | Cod sursa (job #506576) | Cod sursa (job #1087777) | Cod sursa (job #2236791) | Cod sursa (job #636263)
Cod sursa(job #636263)
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[501];
int n,sol,d[501][501][30];
void read()
{
assert(freopen("palm.in","r",stdin)!=NULL);
gets(a);
n=strlen(a);
}
void solve()
{
int i,j,k;
for(i=0;i<n;++i)
for(j=0;j<26;++j)
if(a[i]-'a'>=j)
d[i][i][j]=1;
for(j=1;j<n;++j)
for(i=0;i<n-j;++i)
for(k=0;k<26;++k)
{
d[i][i+j][k]=max(d[i][i+j][k],max(d[i+1][j+i][k],d[i][j+i-1][k]));
if(a[i]==a[i+j] && a[i]-'a'<=k)
d[i][i+j][a[i]-'a']=max(d[i][i+j][a[i]-'a'],d[i+1][i+j-1][k]+2);
}
for(i=0;i<26;++i)
sol=max(sol,d[0][n-1][i]);
}
void write()
{
assert(freopen("palm.out","w",stdout)!=NULL);
printf("%d",sol);
}
int main()
{
read();
solve();
write();
return 0;
}