标签: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; }
标签:style blog http color io os ar strong sp
原文地址:http://www.cnblogs.com/tallisHe/p/4018188.html