HDU 1513 最长公共子序列拓展DP
2014-04-26 15:47
507 查看
将原字符串倒置,然后与原字符串求最长公共子序列,
ans=n-dp
。 用滚动数组
ans=n-dp
。 用滚动数组
#include "stdio.h" #include "string.h" #include "math.h" int n; char str[5010],str1[5010]; int dp[2][5010]; int find() { int i,j,a; memset(dp,0,sizeof(dp)); for (i=1;i<=n;i++) { a=i%2; for (j=1;j<=n;j++) { if (str[i-1]==str1[j-1]) dp[a][j]=dp[1-a][j-1]+1; else { if (dp[1-a][j]>dp[a][j-1]) dp[a][j]=dp[1-a][j]; else dp[a][j]=dp[a][j-1]; } } } return dp[n%2] ; } int main() { while (scanf("%d",&n)!=EOF) { getchar(); gets(str); strcpy(str1,str); strrev(str1); printf("%d\n",n-find()); } return 0; }
相关文章推荐
- !HDU 1513 Palindrome--dp--(最长公共子序列模型)
- HDU 1513 Palindrome(最长公共子序列)
- hdu 1513 Palindrome<最长公共子序列>
- 最长公共子序列DP Common Subsequence HDU 1159
- HDU 1513 Palindrome(dp最大公共子序列+滚动数组)
- hdu 1513 && 1159 poj Palindrome (dp, 滚动数组, LCS)
- DP动态规划——hdu 1008 Common Subsequence(最长公共子序列)
- hdu 1159 经典dp最长公共子序列
- HDU 1159 Common Subsequence --- DP入门之最长公共子序列
- hdu 1502 java大数+简单dp(最长公共子序列类似)
- hdu 1159 Common Subsequence(最长公共子序列,DP)
- !HDU 1243 反恐训练营--dp--(最长公共子序列)
- hdu 1159 common sequence (最长公共子序列 dp)
- hdu 1513(dp+滚动数组)
- hdu 1080 (DP LCS最长公共子序列)
- HDU 1159 【DP之最长公共子序列】
- HDU 1159 Common Subsequence--DP--(最长公共子序列)
- 【HDU】1159 Common Subsequence(DP、最长公共子序列)
- hdu 1159 Common Subsequence(DP最长公共子序列)
- 最长公共子序列(dp) & hdu 1159 Common Subsequence