Pagini recente » Cod sursa (job #2385136) | Cod sursa (job #1225180) | Cod sursa (job #2511694) | Cod sursa (job #3156333) | Cod sursa (job #1929726)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
const int kMaxDim = 505;
char text[kMaxDim];
int dp[kMaxDim][kMaxDim];
int main() {
std::ifstream inputFile("palm.in");
std::ofstream outputFile("palm.out");
inputFile >> (text + 1);
int n = strlen(text + 1);
for (char currLet = 'z'; currLet >= 'a'; --currLet) {
for (int i = 1; i <= n; ++i)
if (text[i] == currLet)
dp[i][i] = 1;
for (int len = 2; len <= n; ++len) {
for (int i = 1, j = i + len - 1; j <= n; ++i, ++j) {
if (text[i] == text[j] && text[i] == currLet)
dp[i][j] = dp[i + 1][j - 1] + 2;
dp[i][j] = std::max(dp[i][j], dp[i + 1][j]);
dp[i][j] = std::max(dp[i][j], dp[i][j - 1]);
}
}
}
outputFile << dp[1][n] << '\n';
inputFile.close();
outputFile.close();
return 0;
}
//Trust me, I'm the Doctor!