Pagini recente » Cod sursa (job #1666951) | Cod sursa (job #331828) | Cod sursa (job #2704820) | Cod sursa (job #2854295) | Cod sursa (job #637635)
Cod sursa(job #637635)
using namespace std;
#include<fstream>
#include<cstring>
const int MAX_N = 505;
int dp[MAX_N][MAX_N][27];
int N;
char s[MAX_N];
int main()
{
ifstream in("palm.in"); ofstream out("palm.out");
in >> s;
N = strlen(s);
int lg, i, j;
int sol = 1;
for(i = 1; i <= N; ++i) dp[i][i][s[i-1]-'a'] = 1;
for(lg = 2; lg <= N; ++lg)
for( i = 1; i + lg - 1 <= N; ++i)
{
j = i + lg - 1;
for(char k = 'a'; k <= 'z'; ++k )
dp[i][j][k-'a'] = max( dp[i+1][j][k-'a'], dp[i][j-1][k-'a'] );
if( s[i-1] == s[j-1] )
{
for(char k = s[i-1]; k <= 'z'; ++k )
dp[i][j][s[i-1]-'a'] = max( dp[i][j][s[i-1] - 'a'], 2 + dp[i+1][j-1][k-'a'] );
}
}
for(char k = 'a'; k <= 'z'; ++k)
if( dp[1][N][k-'a'] > sol ) sol = dp[1][N][k-'a'];
out << sol << "\n";
return 0;
}