LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1序列,其对应的位置就是最长匹配子串的位置。下面是字符串21232523311324和字符串312123223445的匹配矩阵,前者为X方...
分类:
其他好文 时间:
2014-05-31 01:33:58
阅读次数:
247
最长公共子序列问题LCS
问题描述:
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列 {i1, i2,…,
ik},使得对于所有j=1,2,…,k有 Xij=Zj。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,...
分类:
其他好文 时间:
2014-05-25 06:26:52
阅读次数:
229
动规基础:最长递增子序列的三种解法。附详解和代码。第一种:转化成LCS问题求解O(n*n)。第二种:设d[i]为以第i个元素结尾的最长递增子序列的长度O(n*n)。第三种:二分查找优化O(nlogn)。...
分类:
其他好文 时间:
2014-05-10 08:36:18
阅读次数:
462
题目链接:1371 - Period
题意:给定两个字符串,可以把第二个字符串分成若干份,然后由第一个字符串去操作得到每个分出来的字符串,代价为其中的最大值,要求代价的最小值
思路:第一个字符串长度为50,所以答案肯定不会超过50,可以二分答案0到50,不二分的话直接就超时了,然后每次判断进行dp操作,类似LCS问题,只不过原来是相同的+1,现在变成不同的+1,因为不同的肯定就要进行操作了,然...
分类:
其他好文 时间:
2014-05-04 09:00:23
阅读次数:
274
最长公共子序列经典问题,由于题的条件特殊,可转换成LIS问题,可在O(nlogn)内得到解决。根据刘汝佳大大的,加上自己的理解,不太理解的童鞋可以看一看(前提:已掌握LIS问题和LCS问题的解法)...
分类:
其他好文 时间:
2014-05-04 08:46:48
阅读次数:
339