kmp
xiaoxiaoluo
这个作者很懒,什么都没留下…
展开
-
kmp poj 3450 3461
这两题都比较简单,很明显的kmp求解 poj 3450 题目大意:就是求最长的公共子串,如果有长度一样的,取字典序最小的 跟poj 3080基本一模一样,没啥好说的~ #include #include #include using namespace std; const int maxn = 4010; const int maxm = 210; int n,原创 2012-04-19 02:10:00 · 1162 阅读 · 0 评论 -
kmp poj 3167
参考了这个http://www.cppblog.com/zxb/archive/2010/10/06/128782.aspx?opt=admin 他用的是hash的思想 题目大意是:给一个字符串,在给个子串,求子串是否在是整个字符串的子串,字符串之间的匹配遵循相对位置 例如给定:5 6 2 10 10 7 3 2 9 然后子串: 1 4 4 3 2 1它与 2 10 10 7转载 2012-04-19 01:15:08 · 1799 阅读 · 0 评论 -
kmp练习 poj 2541
题目大意:给出一个01字符串,表示天气情况,0表示下雨,1表示天晴,要你预测未来l天的天气情况 预测规则是,比如给了n个字符串,后t天,s[n-t + 1] ~~~s[n]的天气情况和s[k-t+1] ~~~s[k]一样,k 解题思路:逆向kmp,从最后一个n往前做kmp 写的时候容易出错的地方是先判断匹配的字符串是否超出了13~~ 然后再来看求那个最大的k 代码实现: #in原创 2012-04-11 02:33:20 · 1003 阅读 · 1 评论 -
kmp poj 3080
题目大意:给出几组测试的字符串组,要求你求出每组字符串的最长公共子串,公共子串长度要求至少为3,注意,当出现等长的公共字符串时,输出字符串最小的那个 若没公共子串,输出“ no significant commonalities ” 解题思路:kmp枚举,让第一个字符串的长度大于等于3的子串分别于其他字符串匹配比较,求出最长的子串 #include #include #i原创 2012-04-16 01:09:28 · 818 阅读 · 0 评论 -
kmp算法练习 poj 1226 poj 1961
poj 1226 题目大意:给出一组字符串,要你求出这些字符串的最长公共子串的长度,公共子串可以正序或逆序匹配 解题思路:kmp枚举,枚举第一个字符串的每个子串的正序和逆序,与其余的字符串匹配看是否是其子串,求出最大的子串长度。 这题也可以用后缀树求,留待后面研究。。。。 #include #include #include using namespace std; co原创 2012-04-03 01:35:08 · 1317 阅读 · 1 评论 -
hdoj 1238 Substrings
题目大意:求一组字符串的最长子串,子串包括逆串匹配 解题思路:选一个最短字符串,枚举其子串,跟其他字符串用kmp正匹配和逆匹配 注意没有子串匹配的情况。 #include #include #include #include using namespace std; const int maxn = 102; char str[maxn][maxn]; int slen[maxn原创 2012-08-25 10:52:23 · 739 阅读 · 0 评论 -
kmp 练习2 poj 2185 poj 2406
poj 2185 题目大意:给一个矩阵,要你求出矩阵的最小覆盖的大小,即左上角多大长度的字符串能扩展覆盖到整个矩阵 解题思路,最小覆盖子串http://blog.csdn.net/fjsd155/article/details/6866991 每行的最小覆盖子串相互独立,所以求出每行最小覆盖子串的最小公倍数 同理求出每列最小覆盖子串的最小公倍数,两者相乘即为所求 #include #原创 2012-04-06 01:47:03 · 838 阅读 · 0 评论