题意:给你n个的串,求出它们的最长公共子串,如果不存在这个子串,则输出“IDENTITY LOST”,如果存在多个最长公共子串,则输出字典序最小的那一个。
思路:二分枚举最长公共子串的长度,然后再枚举此长度的所有子串,找出字典序最小的解(不用二分直接暴力也能过)//400 KB 125 ms
#include
#include
#include
#include
using namespace...
分类:
其他好文 时间:
2015-02-17 22:26:17
阅读次数:
203
大致题意:
就是求k个长度为60的字符串的最长连续公共子串,2
规定:
1、 最长公共串长度小于3不输出
2、 若出现等长的最长的子串,则输出字典序最小的串
思路:和POJ-3450-Corporate Identity一样二分+枚举,但是直接暴力也0ms
//192 KB 0 ms 题目太水,我就把POJ3450的代码改了几句话
#includ...
分类:
其他好文 时间:
2015-02-17 22:25:14
阅读次数:
242
有两个字符串S1和S2,求一个最长公共子串,即求字符串S3,它们同时是S1和S2的子串,且要求它们的长度最长,并确定这个长度。这个问题我们称之为最长公共子序列问题。
与求最长递增子序列一样,我们首先将原问题分割成一些子问题,我们用dp[i][j]表示S1中前i个字符和S2中前j个字符分别组成的两个前缀字符串的最长公共子串长度。显然的,当i,j较小时我们可以直接给出答案,如dp...
分类:
编程语言 时间:
2015-02-12 16:22:43
阅读次数:
178
思路与前面的3080一样代码如下:#include
#include
#include
using namespace std;char str1[220],str2[220];
int next[220],n;
char ch[4400][220];void GetNext()
{
int j=0;
int len=strlen...
分类:
其他好文 时间:
2015-02-08 14:08:38
阅读次数:
200
/*
题意:将两个字符串结合起来,他们的公共子串只输出一次
思路:根据LCS的原理,将每个字符都进行标记,看两个字符串中对应的字符究竟处于什么状态,
然后输出,其标记为公共子串的字符只输出一次即可
*/
# include
# include
# include
# include
using namespace std;
int dp[110][110],pre[110][110];
...
分类:
其他好文 时间:
2015-02-06 11:17:25
阅读次数:
123
最近在项目中碰到了这样的一个问题,要比较JS和CSS是否做了修改,先是想着借助第三方工具发现没找到,后面转念一想,这个问题不就是对两个文件的第一行求最大的公共子串嘛,既然是要求公共子串的最大长度,由此想到了动态规划算法。代码是从网上C++改写过来的,感谢那位C++的兄弟,代码如下:package d...
分类:
编程语言 时间:
2015-02-04 10:58:32
阅读次数:
197
题意: 给定m个串,让你找出它们的最长公共子串
思路: 先二分串的长度,枚举该长度的串(可以从第一个串里找),看该长度是否合法,(就是用这个长度的所有串去匹配给定的 第 2 - m 个串 为提高效率,用kmp)然后得到一个最大长度,再在该长度下寻找一个字典序最小的解即可
POJ3450代码(3080类似)
/**********************************...
分类:
其他好文 时间:
2015-02-02 23:16:32
阅读次数:
218
/*
最少需要补充的字母数 = 原序列S的长度 — S和S'的最长公共子串长度
*/
# include
# include
# include
# include
using namespace std;
int dp[2][5010];///滚动数组
int main()
{
char a[5010];
char b[5010];
int i,j,k,len;...
分类:
编程语言 时间:
2015-02-02 16:01:38
阅读次数:
168
一、什么是最长公共子序列
什么是最长公共子序列呢?举个简单的例子吧,一个数列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
题意:tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。
输入第一行给出一个整数N(0
接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于...
分类:
其他好文 时间:
2015-01-31 23:19:56
阅读次数:
323