poj1159 最大公共子串
2013-06-29 19:55
656 查看
#include<stdio.h> #include<string.h> main() { int a[2][5003],n,len; char s[5003]; while(~scanf("%d",&n)) { scanf("%s",s); len=strlen(s); memset(a,0,sizeof(a)); for(int i=1;i<=len;i++)for(int j=1;j<=len;j++) { if(s[i-1]==s[len-j])a[i%2][j]=a[(i-1)%2][j-1]+1;//注意这里 只有这个条件成立才可以赋值 否则 不应该有值 此题使用滚动数组 else a[i%2][j]=a[i%2][j-1]>a[(i-1)%2][j]?a[i%2][j-1]:a[(i-1)%2][j]; } printf("%d\n",len-a[len%2][len]); memset(s,0,sizeof(s)); } }
相关文章推荐
- hdu 1159 Common Subsequence 最大公共子串
- poj 1159 Palindrome(最长公共子串)
- poj 1159 最长公共子串LCS
- POJ 1159 Palindrome 最大公共子序列+滚动数组
- poj 1159 Palindrome(最长公共子串)
- poj 3294 Life Forms(n个字符串中 求公共子串长度超过k得最大子串 后缀数组)
- POJ 2774-Long Long Message(后缀数组+高度数组-最大公共子串长度)
- POJ 2217-Secretary(后缀数组+高度数组-最大公共子串长度)
- (Relax 后缀数组1.4)POJ 2774 Long Long Message(求两个字符串公共子串的最大长度)
- HDU 1159 Common Subsequence(dp最大公共子串)
- (字符串的处理4.7.16)POJ 1159 Palindrome(让一个字符串变成回文串需要插入多少个字符...先逆序,在减去公共子序列的最大长度即可)
- poj 1159 Palindrome--最长公共子串
- (字符串的处理4.7.16)POJ 1159 Palindrome(让一个字符串变成回文串需要插入多少个字符...先逆序,在减去公共子序列的最大长度即可)
- 最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理
- POJ 题目3415 Common Substrings(后缀数组+栈,求可以匹配到的长度大于k的公共子串个数)
- 找出两个字符串中最大的公共子串的简单实现
- 最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和
- 两个字符串的最大公共子序列和最大公共子串
- sdutacm-最大公共子串
- poj 2774 求两个字符串的最长公共子串