hdu 2203 亲和串
2015-06-13 18:17
211 查看
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2203
kmp简单题,先预处理一下,然后再搞。。
kmp简单题,先预处理一下,然后再搞。。
[code]#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<vector> #include<map> #include<set> using std::cin; using std::cout; using std::endl; using std::find; using std::sort; using std::set; using std::map; using std::pair; using std::vector; using std::multiset; using std::multimap; #define sz(c) (int)(c).size() #define all(c) (c).begin(), (c).end() #define iter(c) decltype((c).begin()) #define cls(arr,val) memset(arr,val,sizeof(arr)) #define cpresent(c, e) (find(all(c), (e)) != (c).end()) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i) #define pb(e) push_back(e) #define mp(a, b) make_pair(a, b) const int Max_N = 100010; typedef unsigned long long ull; char str[Max_N]; struct KMP { int i, j, n, m, next[Max_N]; char text[Max_N << 1], pat[Max_N]; inline void init() { strcpy(text, str); strcat(text, str); } inline void get_next() { n = strlen(pat); for (i = 1, j = next[0] = 0; i < n; i++) { while (j > 0 && pat[i] != pat[j]) j = next[j - 1]; if (pat[i] == pat[j]) j++; next[i] = j; } } inline bool kmp_match() { get_next(); m = strlen(text); for (i = j = 0; i < m; i++) { while (j > 0 && text[i] != pat[j]) j = next[j - 1]; if (text[i] == pat[j]) j++; if (j == n) return true; } return false; } }kmp; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout); #endif while (~scanf("%s %s", str, kmp.pat)) { kmp.init(); puts(kmp.kmp_match() ? "yes" : "no"); } return 0; }
相关文章推荐
- Struts1之bean标签
- leetcode--BinaryTreeLevelOrderTraversal II (二叉树层遍历递归实现)
- js浏览器兼容性问题
- 处理器,操作系统,程序的位数,指针的长度
- 腾讯-信鸽实现消息推送
- redis 应用场景
- 随机点云遍历构造成树
- SGU129 Inheritance
- 大概知道 ParameterSet 是什么意思了
- 关于设计模式中的继承与组合
- Centos 7安装XFCE桌面
- 控制台模拟电梯工作原理
- Effective C++条款11解读: 在operator=中处理“自我赋值”------顺便给出string类的Big Three
- Android 性能分析案例
- IE11 经常崩溃的一个解决方法
- 在Spring MVC中,事务可以加在Controller层
- 杂记
- 苏宁工作一月总结
- [leetcode][math] Basic Calculator
- 用qsort对字符串数组排序需要注意的几个问题