Pagini recente » Cod sursa (job #2673146) | Cod sursa (job #1371655) | Cod sursa (job #1071920) | Cod sursa (job #1067810) | Cod sursa (job #638933)
Cod sursa(job #638933)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("palm.in");
ofstream g("palm.out");
string s;
int i,n,v[501],sol=0,l[501][501][28],maxi,j,k;
int main () {
f >> s;
n=s.size();
for (i=1;i<=n;i++) v[i]=int(s[i-1])-int('a')+1;
for (i=1;i<=n;i++)
for (k=1;k<=v[i];k++)
l[i][i][k]=1;
for (j=2;j<=n;j++)
for (i=1;i<=n-j+1;i++) {
for (k=1;k<=27;k++)
l[i][i+j-1][k]=max(l[i+1][i+j-1][k],l[i][i+j-2][k]);
if (v[i]==v[i+j-1]) {
for (k=1;k<=v[i];k++)
if (j>2)
l[i][i+j-1][k]=max(l[i][i+j-1][k],l[i+1][i+j-2][v[i]]+2);
else
l[i][i+j-1][k]=max(l[i][i+j-1][k],2);
}
}
g << l[1][n][1] << '\n';
f.close();g.close();
return 0;
}