码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1159 Palindrome

时间:2014-10-11 02:49:14      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   strong   sp   

题目链接:http://poj.org/problem?id=1159

 

思路:

    对该问题的最优子结构与最长回文子序列相同。根据最长回文子序列的状态方程稍加改变就可以得到该问题动态方程。

代码:

 

#include <stdio.h>
#include <string.h>

const int MAX_N = 5000 + 10;
int dp[MAX_N][MAX_N];
char A[MAX_N];
int Max(int a, int b) { return a > b ? a : b; }

int Min( int i, int j )
{
    if ( dp[i][j] != -1 )
        return dp[i][j];

    if ( i == j )
        return dp[i][j] = 0;
    else
    if ( i > j )
        return dp[i][j] = 0;
    else
    if ( A[i] == A[j] )
        return dp[i][j] = Min(i+1, j-1);
    else
        return dp[i][j] =  1 + Max( Min(i+1, j), Min(i, j-1) );    
}

int main()
{
    int n, ans;

    scanf( "%d %s", &n, A );

    memset( dp, -1, sizeof(dp) );
    ans = Min( 0, n-1 );
    printf( "%d\n", ans );

    return 0;
}

 

poj 1159 Palindrome

标签:style   blog   http   color   io   os   ar   strong   sp   

原文地址:http://www.cnblogs.com/tallisHe/p/4018188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!