Cod sursa(job #1789243)

Utilizator dnprxDan Pracsiu dnprx Data 26 octombrie 2016 20:05:19
Problema PalM Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 500;

char s[1 + MAXN];
int dp[1 + MAXN][1 + MAXN];

int main()
{
    char ch;
    int i, j, pas;
    ifstream fin("palm.in");
    ofstream fout("palm.out");
    fin >> (s + 1);
    int n = strlen(s + 1);
    for (ch = 'z'; ch >= 'a'; ch--)
    {
        for (int i = 1; i <= n; i++)
            if (s[i] == ch)
                dp[i][i] = 1;
        for (pas = 1; pas < n; ++pas)
            for (i = 1; i + pas <= n; i++)
            {
                j = i + pas;
                if (s[i] == s[j] && s[i] == ch)
                    dp[i][j] = 2 + dp[i + 1][j - 1];
                dp[i][j] = max(dp[i][j], max(dp[i][j - 1], dp[i + 1][j]));
            }
    }
    fout << dp[1][n] << "\n";
    fout.close();
    return 0;
}