#include
#include
using namespace std;
const int max_length=10;
void print(int b[max_length][max_length],string X,int i,int j);
void LCS(string X,string Y,int b[max_length][max_length],int m,int n )
{...
分类:
编程语言 时间:
2015-05-08 16:36:08
阅读次数:
126
题意:王子和公主同时从1出发走到 n*n, 求他们两个路径的最长公共子序列;
思路:因为这题n有250,如果用LCS负责度为O(n^2),容易超时,于是我们选择它的优化版Lis算法来求最长公共子序列,这样我们的复杂度就降为O(n*logn)了。
Lis算法:
先回顾经典的O(n^2)的动态规划算法,设A[t]表示序列中的第t个数,F[t]表示从1到t这一段中以t结尾的最长上升子序列...
分类:
其他好文 时间:
2015-05-07 22:09:29
阅读次数:
161
uva 11151 Longest PalindromeA palindrome is a string that reads the same from the left as it does from the right. For example, I, GAG and MADAM are palindromes, but ADAM is not. Here, we consider also...
分类:
其他好文 时间:
2015-05-06 17:56:58
阅读次数:
116
题意:LCM……最长公共子序列……不想解释了解法:这题只需要求长度,所以显而易见(对没错我就是来装×的),方程为dp[i][j] = {dp[i - 1][j - 1] + 1(s1[i] == s2[i]), max(dp[i - 1][j], dp[i][j - 1])}。好吧还是解释一下……d...
分类:
其他好文 时间:
2015-05-06 12:34:34
阅读次数:
108
1、先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。 2、最长公共子串 其实这是一个序贯决策问题,可以用动态规...
分类:
编程语言 时间:
2015-05-06 01:44:47
阅读次数:
188
题目传送:Palindrome
思路:一看题目思路很清晰,就是求出字符串s和倒转s后的字符串t的最长公共子序列,但是一看空间开销有点大,如果开int就会爆,5000*5000有100MB了,这里可以开short int,差不多正好可以过去,还有一种做法就是弄一个滚动数组,因为求LCS,根据状态转移方程可以知道,只需要前一行和当前行就行了,所以开个2*5005就OK了,具体看代码
...
分类:
其他好文 时间:
2015-05-05 09:00:35
阅读次数:
121
#最长公共子序列(LongestCommonSubsequence Problem;LCS)
##问题描述
给定两个序列$X={x_1,x_2,x_3...,x_m}$和$Y={y_1,y_2,y_3,...,y_n}$,求X和Y的最长公共子序列。
>例子:$X={A,B,C,B,D,A,B}$,$y={B,D,C,A,B,A}$,最长公共子序列为${B,C,B,A}$。...
分类:
其他好文 时间:
2015-05-05 08:56:34
阅读次数:
138