思路:这题是论文里的最后一道练习题了,不过最后一题竟然挺水的。
因为求的是未反转或者反转后,最长公共子串。
刚开始还真不知道怎么构建连接成一个字符串,因为需要有反转嘛!
但是其实挺简单的,把未反转的和反转后的字符串都连起来,中间用未出现过的字符隔开就行了!然后未反转的和反转的在同一组。
二分枚举最长的公共前缀长度,然后统计看看这个最长的长度在不在所有的组里,如果在就符合……
#inclu...
分类:
其他好文 时间:
2014-08-15 17:55:29
阅读次数:
277
最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合...
分类:
其他好文 时间:
2014-08-15 00:05:56
阅读次数:
335
思路:其实很简单,就是两个字符串连接起来,中间用个特殊字符隔开,然后用后缀数组求最长公共前缀,然后不同在两个串中,并且最长的就是最长公共子串了。
注意的是:用第一个字符串来判断是不是在同一个字符中,刚开始用了第二个字符的长度来判断WA了2发才发现。
#include
#include
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-08-15 00:02:56
阅读次数:
248
56.最长公共字串(算法、字符串)。题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。例如:输入两个字符串...
分类:
其他好文 时间:
2014-08-14 13:25:08
阅读次数:
178
1 //Accepted 4112 KB 16 ms 2 //最长公共子串 3 #include 4 #include 5 #include 6 using namespace std; 7 const int imax_n = 1005; 8 int dp[imax_n][im...
分类:
其他好文 时间:
2014-08-11 20:54:32
阅读次数:
219
http://poj.org/problem?id=2774
想用后缀数组的看这里:http://blog.csdn.net/u011026968/article/details/22801015
本文主要讲下怎么hash去找
开始的时候写的是O(n^2 logn)算法 果断超时。。。虽然也用了二分的,,
代码如下:
//hash+二分
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-10 01:47:49
阅读次数:
337
题意 给你n个DNA串 求它们的长度最大的公共子串 如果有多个 输出字典序最小的 长度小于3的不算
每个DNA串的长度都是60 可以从子串长度为60依次递减 并枚举所有该长度子串 当某个长度的子串也为其它n-1个串的子串时 就是我们要的答案了
判断是否为其它DNA串的子串直接kmp就行了...
分类:
其他好文 时间:
2014-08-09 18:48:08
阅读次数:
302
1 //Accepted 204 KB 891 ms 2 //dp最长公共子串 3 //dp[i][j]=max(dp[i-1][j],dp[i][j-1]) 4 //dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1) (s1[i]==s2[j]) 5 #inc...
分类:
其他好文 时间:
2014-08-09 11:22:47
阅读次数:
189
链接: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
最长公共子序列问题以及背包问题都是DP(动态规划)算法的经典题目,值得深度挖掘以致了解DP算法思想。问题如下:
最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(L...
分类:
其他好文 时间:
2014-08-08 16:02:16
阅读次数:
200