poj 3461 Oulipo kmp字符串匹配

//#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

//string a,b;
char a[10000],b[1000000];
int asize,bsize;
int kmp(){
    int *pi = new int [asize];
    pi[0] = -1;
    for(int i = 1,k = -1;i<asize;i++){
        while(k>-1&&a[k+1] != a[i])
            k = pi[k];
        if(a[k+1] == a[i])
            k++;
        pi[i] = k;
    }
    int result = 0;
    for(int i = 0,k = -1;i<bsize;i++){
        while(k>-1&&a[k+1] != b[i])
            k = pi[k];
        if(a[k+1] == b[i])
            k++;
        if(k == asize - 1){
            result++;
            k = pi[k];
        }
    }
    return result;
}

int main(){
    int times;
    //cin >> times;
    scanf("%d",&times);
    while(times--){
        scanf("%s%s",a,b);
        asize = strlen(a);
        bsize = strlen(b);
        printf("%d\n",kmp());
        //a.clear();
        //b.clear();
        //cin >> a >> b;
        //cout << kmp() << endl;
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-20 17:17:14

poj 3461 Oulipo kmp字符串匹配的相关文章

POJ 3461 Oulipo KMP算法题解

本题就是给出很多对字符串,然后问一个字符串在另外一个字符串出现的次数. 就是所谓的Strstr函数啦. Leetcode有这道几乎一模一样的题目. 使用KMP算法加速,算法高手必会的算法了. 另外看见讨论说什么使用KMP还超时,最大可能是没有真正理解next table的含义,写了错误的代码,故此虽然自己运行结果正确,但是却没有真正发挥next table的作用,使得算法退化为暴力法了,所以运行正确,但超时. KMP参考: http://blog.csdn.net/kenden23/articl

[POJ] 3461 Oulipo [KMP算法]

Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23667   Accepted: 9492 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

poj 3461 Oulipo kmp

Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26252   Accepted: 10478 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 quot

[POJ 3461] Oulipo &amp; KMP模板

Oulipo Time Limit: 1000ms, Memory Limit: 65536K 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, mai

POJ 3461 Oulipo kmp 水过

Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29178   Accepted: 11690 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 quot

poj 3461 Oulipo(KMP模板题)

题目链接:http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23559   Accepted: 9437 Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'. He was a

POJ 3461 Oulipo (求模式串在文本串中出现的次数)

Oulipo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 36128   Accepted: 14584 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 quot

POJ 3461 Oulipo(乌力波)

POJ 3461 Oulipo(乌力波) Time Limit: 1000MS   Memory Limit: 65536K [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: Tou

POJ 3461 Oulipo(自己YY的模式匹配算法)

请不要随便指点别人该怎么做.每个人的人生都应该自己掌握.你给不了别人一切.你也不懂别人的忧伤. 微笑不代表快乐.哭泣不一定悲伤 不努力怎么让关心你的人幸福.不努力怎么让看不起你的人绝望. 我用生命在奋斗--lx_Zz ------------------------------------------------------------- -------------------------    华丽的分割线    ---------------------------- -----------