Pagini recente » Cod sursa (job #406008) | Cod sursa (job #828573) | Cod sursa (job #1180499) | Cod sursa (job #1271044) | Cod sursa (job #1240051)
#include <iostream>
#include <cstdio>
#include <cstring>
#define nmax 505
using namespace std;
int m[nmax][nmax][30];
char s[nmax];
int main(){
freopen("palm.in", "r", stdin);
freopen("palm.out", "w", stdout);
cin.getline(s,nmax);
int lg=strlen(s);
for(int i=lg;i;i--){
m[i][i][s[i]-'a']=1;
for(int k=24;k>=0;k--)
m[i][i][k]=max(m[i][i][k],m[i][i][k+1]);
for(int j=i+1;j<=lg;j++){
for(int k=0;k<26;k++){
m[i][j][k]=max(m[i][j-1][k],m[i+1][j][k]);
if(s[i]==s[j] && s[i]-'a'==k)
m[i][j][k]=(m[i+1][j-1][k]+2);
}
for(int k=24;k>=0;k--)
m[i][j][k]=max(m[i][j][k],m[i][j][k+1]);
}
}
printf("%d\n",m[1][lg][0]);
fclose(stdin);
fclose(stdout);
return 0;
}