在写题解之前给自己打一下广告哈~。。抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下:http://edu.csdn.net/course/detail/209题目:Common SubsequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio...
分类:
其他好文 时间:
2015-02-06 18:51:11
阅读次数:
125
子序列要求元素顺序一致就可以了,而字串必须是连续的。如ABCBDAB与BDCABA两个字符串,最长公共子序列有BCBA、BDAB和BCAB, 而最长公共字串只有AB和BD。
最长公共子序列
法一:穷举法
检查字符串x所有字序列,共有2^m个,检查它是否在y字符串中出现,每个需要O(n),时间复杂度为指数级的。
法二:动态规划(DP)
将两个字符串x[1…m]和...
分类:
编程语言 时间:
2015-02-06 11:23:02
阅读次数:
206
/*
题意: 有三个字符串A, B, C。 求串D。
D是A, B的公共子序列。
C是D的子串。
求最长的D串.输出长度.
先求出a,b的最长公共子序列,从开头和末尾开始的都要
其中dp1[i][j]表示a中第i个字符之前,b中第j个字符之前的最长公共子序列长
dp2[i][j...
分类:
其他好文 时间:
2015-02-03 17:19:35
阅读次数:
146
/*
按升序输出两个串所有的最长公共子序列
首先求出最长公共子序列,然后处理处两个数组,f1['a'~'z'][j]表示该字母在第一个串的前j个字母中出现的最大下标,
f2['a'~'z'][j]表示该字母在第二个串的前j个字母中出现的最大下标。现在我们已经知道了最长公共子序列的长度,
我们从最后一位开始枚举每一位放什么字母,用dfs来实现,并用前面处理出来的数组进行可行性剪枝。
由于最后答案的串...
分类:
其他好文 时间:
2015-02-02 23:20:28
阅读次数:
170
一、什么是最长公共子序列
什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。
举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4 5。
一直不明白:最长公共子串和最...
分类:
其他好文 时间:
2015-02-02 12:39:26
阅读次数:
137
链接:click here
题意:
给你一串字符串,让你求最少加入几个字符,才能使得这个字符串是个回文串。
思路:
设a[i]是这个字符串,b[i]是这个字符串的逆序串。那么a[i],b[i]的最长公共子序列就是所求的字符串里拥有的最大的回文串。然后用总串长减去最大的回文串长度即为所求。求最长公共子序列的公式为:dp[i][j]=max(dp[i-1] [j],dp[i][j-1]...
分类:
编程语言 时间:
2015-01-31 23:22:48
阅读次数:
461
链接:click here
题意:tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。
输入第一行给出一个整数N(0
接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于...
分类:
其他好文 时间:
2015-01-31 23:19:56
阅读次数:
323
http://acm.hdu.edu.cn/showproblem.php?pid=1159题意 : 给出两个字符串 求出最长公共子序列思路: if(str1[i]==str2[j]) { dp...
分类:
其他好文 时间:
2015-01-31 01:37:54
阅读次数:
142
地址:http://poj.org/problem?id=1159题目需求:给你一个字符串,求最少添加多少字符可以使之构成回文串。题目解析: 简单做法是直接对它和它的逆序串求最长公共子序列长度len。n-len即为所求。(n为原串长度)即: 最少补充的字母数 = 原序列的长度 — 原串和逆序的最长公...
分类:
其他好文 时间:
2015-01-30 19:30:52
阅读次数:
153
题目链接:http://blog.csdn.net/u014361775/article/details/42873875题目解析:给定两行字符串序列,输出它们之间最大公共子单词的个数对于给的两个序列X 和 Y,用i 和 j分别作为它们的前缀指针,f[i][j]表示序列X的前缀Xi 和 序列Y的前缀...
分类:
其他好文 时间:
2015-01-30 19:12:19
阅读次数:
428