链接:UVa 10192
题意:给定两个字符串,求最长公共子串的长度
思路:这个事最长公共子串的直接应用
#include
#include
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
char s[105],t[105];
int i,j,k=0,m,n,dp[105][105];
...
分类:
其他好文 时间:
2014-08-08 18:11:56
阅读次数:
199
~\(≧▽≦)/~啦啦啦,昨天说的是LCS,今天我们要学习的是LIS,什么是LIS呢?LIS:最长有序子序列(递增/递减/非递增/非递减)这么说还是有些模糊,举个例子: 在一个无序的序列a1,a2,.....,am里,找到一个最长的序列,满足ai D[len],则将a[i]接在D[len]后将得到一...
分类:
其他好文 时间:
2014-08-08 18:00:26
阅读次数:
247
最长公共子序列问题以及背包问题都是DP(动态规划)算法的经典题目,值得深度挖掘以致了解DP算法思想。问题如下:
最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(L...
分类:
其他好文 时间:
2014-08-08 16:02:16
阅读次数:
200
题目的本意是求LCS,但由于每个序列的元素各不相同,所以将A序列重新编号{1,2,,,p+1},将B序列重新编号,分别为B中的元素在A中对应出现的位置(没有的话就是0)。在样例中就是A = {1 7 5 4 8 3 9},B = {1 4 3 5 6 2 8 9}重新编号以后:A = {1 2 3 ...
分类:
其他好文 时间:
2014-08-08 09:29:55
阅读次数:
341
LCS属线性结构上的动态规划,应该是动规里面很简单的一种类型。
最长公共子序列问题,一旦明确了状态,找到状态转移方程还是很简单的。但是对于本题来说,难点之一就是会很难想到该如何定义状态。
作为一只菜鸟,兹认为此题很复杂。
首先我是想不到每一步都把没到终点的字母全加上1,以及这种效果与你去找开始和结束的效果是一样的。
甚至,若不是在做动规的专题,我根本想不到这样的题目,会用动规来解决。
再...
分类:
其他好文 时间:
2014-08-07 19:14:11
阅读次数:
256
LCS!~如果你在百度上搜这个的话会出来”英雄联盟冠军联赛”,orz。。但是今天要讲的LCS是最长公共子序列 ,"Longest Common Subsequence "not"League of Legends Championship Series"小盆友们又要涨姿势了~ 最长公共子序列也称作最...
分类:
其他好文 时间:
2014-08-07 18:46:50
阅读次数:
271
LCS:给出两个序列S1和S2,求出的这两个序列的最大公共部分S3就是就是S1和S2的最长公共子序列了。公共部分必须是以相同的顺序出现,但是不必要是连续的。LCS具有最优子结构,且满足重叠子问题的性质。所以我们可以用动态规划来解决LCS问题。由LCS问题的最优子结构可得出递归式:参考代码:#incl...
分类:
其他好文 时间:
2014-08-06 22:19:42
阅读次数:
204
monotonic:单调的.序列为X=(x1,x2,x3,x4...),首先排序X得到X',找出X和X'的最长公共子序列(LCS)即可。另一种思维: 先回顾经典的O(n^2)的动态规划算法,设A[i]表示序列中的第i个数,F[i]表示从1到i这一段中以i结尾的最长上升子序列的长度,初始时设F[i] ...
分类:
其他好文 时间:
2014-08-06 22:19:25
阅读次数:
244
这道题基本上是在普通LCS问题上的一点小小的变形,由求LCS的长度,改为求LCS的权值。架构还是不变的。可作为LCS问题的模板题。时间复杂度O(N^2)。
注意
题目中的字母都是小写字母,也就是只有26种字符。不需要开太大的数组。所以hash就是很好的一种保存权值的方法。另外吐槽一下。子弹序列和恐怖分子序列的长度太坑了,因为题目没有给出长度。我开了个2000个数组,wa了n次。改成2005就AC了。...
分类:
其他好文 时间:
2014-08-06 14:59:11
阅读次数:
162