HDU-剪花布条(kmp)&& HDU-Oulipo(kmp)的区别
来源:互联网 发布:js单选框单击事件 编辑:程序博客网 时间:2024/05/22 16:55
HDU2087-剪花布条
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087
题目描述:给出父串和子串,问子串在父串中出现的次数
#include<cstdio>#include<cstring>#include<algorithm>#define maxn 1010using namespace std;char fa[maxn], son[maxn];int falen, sonlen;int kmp_next[maxn];void getnext(){ int i = 0, j = -1; kmp_next[0] = -1; while (i < falen) { if (j == -1 || son[i] == son[j]) kmp_next[i++] = j++; else j = kmp_next[j]; }}int kmp_cnt(){ int i = 0, j = 0, cnt = 0; while (i <= falen) { if (j == -1 || fa[i] == son[j]) { i++; j++; } else j = kmp_next[j]; if (j == sonlen) { cnt++; j = 0;//注意这里:一旦找到一个字串,j就要从子串的第一个字符进行比较。(与下面那题不一样) } } return cnt;}int main(){ int ans; while (~scanf("%s",fa)) { ans = 0; if (fa[0] == '#') return 0; scanf("%s", son); falen = strlen(fa); sonlen = strlen(son); getnext(); ans = kmp_cnt(); printf("%d\n", ans); } return 0;}
HDU1686-Oulipo
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686
题目描述:给子串和父串,问子串在父串中出现的次数。(要看案例确定是这两种匹配的哪一种)
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxn 1000010using namespace std;char fa[maxn], son[maxn];int falen, sonlen;int kmp_next[maxn];void getnext(){ int i = 0, j = -1; kmp_next[0] = -1; while (i < falen) { if (j == -1 || son[i] == son[j]) { i++; j++; kmp_next[i] = j; } else j = kmp_next[j]; //cout << kmp_next[j] << " "; } //cout << endl;}int kmp_cnt(){ int i = 0, j = 0, cnt = 0; while (i < falen) { if (j == -1 || fa[i] == son[j]) { i++; j++; } else j = kmp_next[j]; if (j == sonlen) { cnt++; j = kmp_next[j];//注意这里:一旦找到一个子串,j就要从父串的next[j]对应字符进行比较。 } } return cnt;}int main(){ int ans, n; while (~scanf("%d", &n)) { while (n--) { scanf("%s", son); scanf("%s", fa); falen = strlen(fa); sonlen = strlen(son); getnext(); ans = kmp_cnt(); printf("%d\n", ans); } } return 0;}
0 0
- HDU-剪花布条(kmp)&& HDU-Oulipo(kmp)的区别
- HDU 2087 剪花布条(KMP)
- HDU 2087 剪花布条(KMP)
- HDU - 2087 剪花布条 (KMP)
- HDU 2087 剪花布条(kmp)
- HDU-2087 剪花布条(kmp)
- HDU 2087 剪花布条 (kmp)
- hdu 2087 剪花布条(KMP)
- hdu 2087 剪花布条(KMP)
- HDU - 2087 剪花布条(Kmp)
- HDU - 2087 - 剪花布条(kmp)
- HDU 2087剪花布条 (kmp)
- 【HDU】2087 - 剪花布条(KMP)
- HDU:2087 剪花布条(KMP)
- 【hdu 2087】剪花布条(kmp)
- HDU-2087 剪花布条 (KMP)
- hdu 2087 剪花布条(KMP)
- HDU 2087 剪花布条(KMP )
- C语言system函数详解
- win32强化练习4.1_更改别人的菜单
- DOM对象之Window
- CI框架制作博客网站前台界面
- 51nod 1009 数字1的数量
- HDU-剪花布条(kmp)&& HDU-Oulipo(kmp)的区别
- Java与正则表达式之正则表达式基础
- typedef与define
- 函数与宏
- 贴一个不错的git教程
- java小记之Object类的equals方法t
- Eclipse中的Web项目自动部署到Tomcat
- 汇编 test指令和cmp指令
- Rachel-Zhang