poj1159-LCS滚动数组优化。
2013-07-18 12:54
295 查看
题目连接
题意:
回文,就是从某一个字后面一次往回走。比如abdsdba从s开始后面的字符刚好往回走了,给你一个字符串,问你要插入至少多小个字符可以补成回文。
分析:
此题就是比较两个正序和逆序的字符的最长公共子序列。由于字符串长度达5000个。开关5000*5000二维数组,是超内存。
方法就是。利用滚动数组。
题意:
回文,就是从某一个字后面一次往回走。比如abdsdba从s开始后面的字符刚好往回走了,给你一个字符串,问你要插入至少多小个字符可以补成回文。
分析:
此题就是比较两个正序和逆序的字符的最长公共子序列。由于字符串长度达5000个。开关5000*5000二维数组,是超内存。
方法就是。利用滚动数组。
#include<stdio.h> #include<string.h> #define max(a,b) a>b?a:b int dp[2][5001]; int main() { int n,i,j; char s[5001],t[5001]; while(scanf("%d",&n)!=EOF){ scanf("%s",s); int ans=0; memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(s[i-1]==s[n-j]) 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]); ans=max(ans,dp[i%2][j]); } } printf("%d\n",n-ans); } }
相关文章推荐
- POJ 1159 回文LCS滚动数组优化
- POJ1159求LCS长度 滚动数组优化空间
- poj 1159 Palindrome 【LCS + 滚动数组】
- poj 1159 Palindrome (DP:LCS+滚动数组)
- (POJ 1159)Palindrome <最长公共子序列 / 滚动数组优化 / 记忆化搜索> 简单回文数
- LCS(滚动数组) POJ 1159 Palindrome
- HDU/HDOJ 1159/POJ 1458 Common Subsequence(最长公共子序列LCS,滚动数组)
- hdu1513&&poj 1159 Palindrome(LCS+滚动数组)
- POJ1159——LCS+滚动数组——Palindrome
- poj-1159-Palindrome【LCS】【滚动数组】
- Poj 1159-Palindrome DP (滚动数组优化)
- poj 1159 Palindrome (lcs,滚动数组)
- POJ 1159 Palindrome【LCS+滚动数组】【水题】
- POJ 1159 - Palindrome (LCS, 滚动数组)
- poj 1159 Palindrome LCS一维滚动数组优化
- POJ 1159 Palindrome(lcs加滚动数组)
- poj-1159-Palindrome-学习滚动数组
- poj1159 palindrome(动态规划+滚动数组)
- POJ 1159 DP+滚动数组
- 【poj 1159】 Palindrome DP(类最长公共子序列)+滚动数组