Pagini recente » Cod sursa (job #1104123) | Cod sursa (job #973281) | Cod sursa (job #2663092) | Cod sursa (job #1805514) | Cod sursa (job #636843)
Cod sursa(job #636843)
#include <stdio.h>
#include <string.h>
#define NMax 512
const char IN[]="palm.in",OUT[]="palm.out";
int N;
short T[NMax][NMax][32];
char s[NMax];
short max(short x,short y){
return x>y ? x : y;
}
int main()
{
int i,j,c,k;
freopen(IN,"r",stdin);
scanf("%s",s);
fclose(stdin);
N=strlen(s);
for (i=0;i<N;++i)
for (j=0;j+'a'<=s[i];++j)
T[i][i][j]=1;
for (k=1;k<=N;++k)
for (i=0;i<N;++i)
for (c='z'-'a';c>=0;--c)
{
j=i+k;
T[i][j][c]= max ( max ( T[i][j-1][c] , T[i+1][j][c] ) , T[i][j][c+1] );
if (s[i]==s[j] && s[j]==c+'a')
T[i][j][c]=max(T[i][j][c],T[i+1][j-1][c]+2);
}
freopen(OUT,"w",stdout);
printf("%d\n",T[0][N-1][0]);
fclose(stdout);
return 0;
}