这个问题很经典,典型的动态规划,动态规划就是填一个表,然后遍历一下就行了。
代码实现
/**
* 源码名称:LCSequence.java
* 日期:2014-09-02
* 程序功能:LCS(不连续)
* 版权:CopyRight@A2BGeek
* 作者:A2BGeek
*/
public class LCSequence {
private String mOn...
分类:
其他好文 时间:
2014-09-02 17:48:55
阅读次数:
191
我发现我一直理解错题意了,这里的子序列指的是连续子序列,怪不得我写的LCS一直WA顺便复习一下并查集 1 //#define LOCAL 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const...
分类:
其他好文 时间:
2014-08-31 13:06:51
阅读次数:
219
1 /* 2 题意:求出多个全排列的lcs! 3 思路:因为是全排列,所以每一行的每一个数字都不会重复,所以如果有每一个全排列的数字 i 都在数字 j的前面,那么i, j建立一条有向边! 4 最后用bfs遍历整个图,求出源点到每一个点的距离,其中最大的距离就是最长的...
分类:
其他好文 时间:
2014-08-31 10:29:11
阅读次数:
213
int LCS(string str1, string str2) //返回最长公共字串长度{ //创建矩阵 int** martix; martix = new int*[str1.length()+1]; for(int i =0; imax) {...
分类:
其他好文 时间:
2014-08-30 16:24:39
阅读次数:
151
昨天的问题方案一:寻找hash函数,可行性极低。方案二:载入内存,维护成一个守护进程的服务。难度比较大。方案三:使用前5位来索引,由前3位增至前5位唯一性,理论上是分拆记录扩大100倍,但可以就地利用mysql,最易行。方案四:使用方案三,但增加一个表以减少冗余,但代价新开一个表,并且每次查询都se...
分类:
其他好文 时间:
2014-08-29 22:31:58
阅读次数:
300
题目链接:啊哈哈,点我点我题意:给两个字符串,找出经过多少个操作能够使得两个串相等。。思路:找出两个串的最长公共子序列,然后用最大的串的长度减去最长公共子序列的长度得到的就是须要的操作数。。题目:AGTCTime Limit:1000MSMemory Limit:65536KTotal Submis...
分类:
其他好文 时间:
2014-08-28 12:53:19
阅读次数:
151
思路: f(n) = Σi=1n f(n-i)*f(i-1), 其中 f(0) = f(1) = 1; 利用动归记下之前的 f(2)~f(n-1)即可。
思路:分别以 1~n 为根节点,左右子树根的集合数量相乘,递归,依次得出结果。
分类:
其他好文 时间:
2014-08-27 20:22:28
阅读次数:
278
解决最长公共子序列问题:求解的方法如图所示:例如,设所给的两个序列为X=和Y=。由算法LCS_LENGTH和LCS计算出的结果如下图所示:其模板可以写成void lcss(){ int i,j; int sizex=str1.length(); int sizey=str2.len...
分类:
其他好文 时间:
2014-08-27 16:21:27
阅读次数:
206
#include #include #include using namespace std;int a[505], b[505];int dp[505], path[505];int Susake_lcs[505][505], Susake_lcis[505][505];void Susake_L...
分类:
其他好文 时间:
2014-08-26 13:20:36
阅读次数:
208
对于连续的最大串,我们称之为子串....非连续的称之为公共序列..代码:非连续连续 1 int LCS(char a[],char b[],char sav[]){ 2 int lena=strlen(a); 3 int lenb=strlen(b); 4 int i,j;...
分类:
其他好文 时间:
2014-08-25 22:35:54
阅读次数:
257