poj1159

dp。

#include
#include
#include
using namespace std;
int N;
string a, b;
int dp[2][5006];
int main()
{
    cin >> N;
    cin >> a;
    b = a;
    reverse(b.begin(), b.end());
    for(int i = 1; i <= N; i ++)
        for(int j = 1; j <= N; j ++)
            if(a[i - 1] == b[j - 1])
                dp[i % 2][j] = dp[(i - 1) % 2][j - 1] + 1;
            else
                dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[i % 2][j - 1]);
    cout << N - dp[N % 2][N] << endl;
    // system("pause");
    return 0;
}

你可能感兴趣的:(poj1159)