KMP算法(MP?) HDU 2087 剪花布条 自己卡自己



想法的来源!!!!!!
不懂kmp?请看上面的链接,附上一道模板题 洛谷P3375

题面

这是一道kmp(mp?我也分不清)的模板题(紫书上好像有类似的模板),思路很清楚,下面放出代码

解题

#include <bits/stdc++.h>
#include <ctime>
using namespace std;

clock_t _timer_start,_timer_end;

void start_timer(){
   
    _timer_start=clock();
}
void stop_timer(){
   
    _timer_end=clock();
    double dur=(double)(_timer_end-_timer_start);
    printf("Time Consume:%lf second\n", dur/CLOCKS_PER_SEC);
}
/*--------------------------------------------------------*/
/*--------------------------------------------------------*/
char src[101010],pattern[101010];
int fail[101010];

void calc_fail(){
   
    fail[0]=0;
    int len=strlen(pattern+1);
    int k=0;
    for(int i=1;i<=len;i++){
   
        while(k && pattern[i]!=pattern[k])k=fail[k];
        //下面这一行的有无不影响程序的正确性
        //while(k && pattern[i+1]==pattern[k])k=fail[k];
        fail[i+1]= pattern[i]==pattern[k]?++k:0;
    }
}
long long jump=0;
long long ans=0;
void solve(){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值