Pagini recente » Cod sursa (job #2297597) | Cod sursa (job #2564682) | Cod sursa (job #628018) | Profil materazzi | Cod sursa (job #643224)
Cod sursa(job #643224)
#include<stdio.h>
#include<string.h>
#define Nmax 501
#define SIG 26
#define MOD 97
char s[Nmax];
int a[Nmax][Nmax][SIG];
int maxim(int a,int b)
{
if(a>=b)return a;
return b;
}
int main()
{
FILE*f = fopen("palm.in","r");
fgets(s,Nmax,f);
fclose(f);
int i,j,k,size=strlen(s),pos,max;
if(s[size-1]=='\n')
--size;
for(k=0;k<size;++k)
{
for(i=0;i<size-k;++i)
{
j = i+k;
a[i][j][int(s[i])%MOD] = 1;
a[i][j][int(s[j])%MOD] = 1;
if(s[i]==s[j] && i!=j)
{
a[i][j][int(s[i])%MOD] = 2;
if(k>=2)
{
for(pos = int(s[i])%MOD;pos<SIG;++pos)
a[i][j][int(s[i])%MOD] = maxim(a[i][j][int(s[i])%MOD] , a[i+1][j-1][pos]+2);
}
}
if(k>=2)
for(pos = 0;pos<SIG;++pos)
a[i][j][pos] = maxim(a[i][j][pos], maxim( a[i+1][j-1][pos], maxim(a[i][j-1][pos],a[i+1][j][pos]) ) );
}
}
max = 0;
for(i=0;i<SIG;++i)
max = maxim(a[0][size-1][i],max);
FILE*g = fopen("palm.out","w");
fprintf(g,"%d",max);
fclose(g);
return 0;
}