poj3461 KMP
来源:互联网 发布:yurie elect动作数据 编辑:程序博客网 时间:2024/06/10 01:38
Description
The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a member of the Oulipo group. A quote from the book:
Tout avait Pair normal, mais tout s’affirmait faux. Tout avait Fair normal, d’abord, puis surgissait l’inhumain, l’affolant. Il aurait voulu savoir où s’articulait l’association qui l’unissait au roman : stir son tapis, assaillant à tout instant son imagination, l’intuition d’un tabou, la vision d’un mal obscur, d’un quoi vacant, d’un non-dit : la vision, l’avision d’un oubli commandant tout, où s’abolissait la raison : tout avait l’air normal mais…
Perec would probably have scored high (or rather, low) in the following contest. People are asked to write a perhaps even meaningful text on some subject with as few occurrences of a given “word” as possible. Our task is to provide the jury with a program that counts these occurrences, in order to obtain a ranking of the competitors. These competitors often write very long texts with nonsense meaning; a sequence of 500,000 consecutive'T's is not unusual. And they never use spaces.
So we want to quickly find out how often a word, i.e., a given string, occurs in a text. More formally: given the alphabet {'A', 'B', 'C', …, 'Z'} and two finite strings over that alphabet, a word W and a text T, count the number of occurrences of W in T. All the consecutive characters of W must exactly match consecutive characters of T. Occurrences may overlap.
Input
The first line of the input file contains a single number: the number of test cases to follow. Each test case has the following format:
- One line with the word W, a string over {'A', 'B', 'C', …, 'Z'}, with 1 ≤ |W| ≤ 10,000 (here |W| denotes the length of the string W).
- One line with the text T, a string over {'A', 'B', 'C', …, 'Z'}, with |W| ≤ |T| ≤ 1,000,000.
Output
For every test case in the input file, the output should contain a single number, on a single line: the number of occurrences of the word W in the text T.
Sample Input
3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIAN
Sample Output
130
题意:给出一个字符串,求在另外一个字符串中出现的次数
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char a[10005],b[1000005];int nexta[10005];void getnext(){ int len=strlen(a); nexta[0]=-1; int k=-1; int j=0; while(j<len) { if(k==-1||a[j]==a[k]){ ++j; ++k; if(a[j]!=a[k]) nexta[j]=k; else nexta[j]=nexta[k]; } else k=nexta[k]; }}int kmp(){ int len_a=strlen(a); int len_b=strlen(b); int count=0; int j=0; int i=0; while(j<len_b){ if(i==-1||a[i]==b[j]){ i++; j++; } else i=nexta[i]; if(i==len_a){ count++; i=nexta[i]; } } return count;}int main(){ int n; scanf("%d",&n); while(n--) { scanf("%s%s",a,b); getnext(); int temp=kmp(); printf("%d\n",temp); } return 0;}
- poj3461(KMP)
- POJ3461 KMP
- KMP+poj3461
- poj3461 KMP
- poj3461 KMP
- poj3461 KMP
- POJ3461 KMP
- poj3461 KMP
- poj3461(kmp模版题)
- 【KMP】 poj3461 Oulipo
- poj3461 kmp 模板题
- POJ3461 KMP算法
- poj3461 KMP模板题
- 【KMP】Oulipo POJ3461
- POJ3461《Outplo》方法:KMP
- poj3461 Oulipo (kmp)
- poj3461之kmp入门
- [POJ3461] Oulipo[KMP基础]
- poj3624----01bag(一维+(二维+滚动数组))
- poj3158 同时向前运行的处理模板
- poj 3257 二维dp
- poj 3211 结构体-分组一维dp
- poj 2385 经典dp
- poj3461 KMP
- KMP 模板
- mono 安装 -2016/2/1
- poj 2752 KMPnext[]数组的理解 以及 两种优化
- poj 1961 2406 让你彻底理解KMP的next[]数组的两个题目
- 【bzoj4312】立方体 构造
- GPU渲染管线
- linux 库 动态 静态 编译 混合 使用
- 新手入门教程,从0开始入手APIcloud(二)