hdu1513 Palindrome(LCS+滚动数组)

来源:互联网 发布:脸型眼镜软件 编辑:程序博客网 时间:2024/05/19 15:20

第二次遇到滚动数组,不能忽视了。。。

本题就是字符串反转比较LCS,以后还是写成函数好了。。。还有字符串反转的技巧。

#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;const int N = 5005;char s1[N], s2[N];int dp[3][N], n;int LCS(){    int i, j;    memset(dp, 0, sizeof(dp));    for(i = 1; i <= n; i ++)        for(j = 1; j <= n; j ++)        {            int x = i % 2;            int y = 1 - x;            if(s1[i - 1] == s2[j - 1]) dp[x][j] = dp[y][j - 1] + 1;            else dp[x][j] = max(dp[y][j], dp[x][j - 1]);        }    return n - dp[n % 2][n];}int main(){  //  freopen("in.txt", "r", stdin);    while(~scanf("%d", &n))    {        scanf("%s", s1);        strcpy(s2, s1);        strrev(s2);        printf("%d\n", LCS());    }    return 0;}


0 0