HDU--1358--KMP算法失配函数getfail()的理解--Period
/*
    Name: hdu--1358--Period
    Author: 日天大帝
    Date: 20/04/17 10:24
    Description: 长度/向后移动的位数 = 出现的次数
                kmp其实匹配到了第str.size()位,这一位原本是'\0'的,
                但是由于里面的递推下一位的关系,这一位其实也是匹配了的;
*/
#include<iostream>
#include<cstring>
using namespace std;
void getfail(string);
];
int main(){
    ;
    ios::sync_with_stdio(false);//加上之后少了0.5s    700ms-200ms
    while(cin>>n,n){
        string str;cin>>str;
        getfail(str);
        cout<<"Test case #"<<++k<<endl;
        ; i<=str.size(); ++i){ // 注意i=str.size()
             && i%(i-f[i]) == ){//(i-f[i])是KMP失配函数计算后失配时,向后移动的位数
                cout<<i<<" "<<i/(i-f[i])<<endl;
            }
        }
        cout<<endl;
    }
    ;
}
void getfail(string s)
{
    memset(f,,sizeof(f));  //根据其前一个字母得到
    ;i<s.size();i++)
    {
        int j=f[i];
        while(j && s[i]!=s[j])
            j=f[j];
        f[i+]=(s[i]==s[j])?j+:;
    }
}
HDU--1358--KMP算法失配函数getfail()的理解--Period的更多相关文章
- hdu 4300 kmp算法扩展
		
Clairewd’s message Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
 - hdu 1711 KMP算法模板题
		
题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串 ...
 - KMP算法-next函数求解
		
KMP函数求解:一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为KMP算法.KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串 ...
 - KMP算法Next()函数的一个应用
		
转载:http://www.cnblogs.com/vongang/archive/2012/05/04/2483419.html 记一个KMP算法的应用,经典的KMP算法详解还是看这里 问题:给一个 ...
 - hdu 1686 KMP算法
		
题意: 求子串w在T中出现的次数. kmp算法详解:http://www.cnblogs.com/XDJjy/p/3871045.html #include <iostream> #inc ...
 - poj 2406:Power Strings(KMP算法,next[]数组的理解)
		
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 30069 Accepted: 12553 D ...
 - KMP算法中next数组的理解与算法的实现(java语言)
		
KMP 算法我们有写好的函数帮我们计算 Next 数组的值和 Nextval 数组的值,但是如果是考试,那就只能自己来手算这两个数组了,这里分享一下我的计算方法吧. 计算前缀 Next[i] 的值: ...
 - 【无聊放个模板系列】HDU 1358 KMP
		
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
 - hdu 3613 KMP算法扩展
		
Best Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
 
随机推荐
- Objective-C 编码风格指南
			
本文转自:[Objective-C 编码风格指南 | www.samirchen.com][2] ## 背景 保证自己的代码遵循团队统一的编码规范是一个码农的基本节操,能够进入一个有统一编码规范的团队 ...
 - jquery一次绑定多个元素事件
			
jquery一次绑定多个元素事件 $(".peoplenum,input[name$='otherAmount'],#aa,#bb").bind("change" ...
 - jquery 表格行计算
			
表格行计算 总金额: function jisuanTrJinE(obj){ var curTab = $(obj).closest("table"); var curTr = $ ...
 - 让div产生滚动条
			
.demo{ padding-right:10px; overflow-y:auto; padding-left:10px; scrollbar-face-color:#ffffff; font-si ...
 - centos7 minimal版本下mysql的安装
			
最近第一次尝在虚拟机上安装mysql,由于是centos7 minimal版本,很多安装包或命令必须自己添加,遇到很多问题. 首先是执行# yum install mysql-server 报错: 打 ...
 - 【PHP】震惊,一张图详解递归函数!!!!
			
在PHP学习中,递归函数是一个非常重要也是非常难以理解的部分,本博文将通过一张图尽可能演示这个过程,不对之处还请指出
 - openssl req(生成证书请求和自建CA)
			
伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA.由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉openss ...
 - HybridApp Exception
			
HybridApp Exception [创建安卓虚拟机失败]CPU acceleration status:HAXM must be updated(version 1.1.1<6.0.1) ...
 - 一个非常简单的例子告诉你attachEvent和addEventListener的区别
			
<input id="test" type="button" value="测试"> <script> var te ...
 - kbengine 常见问题汇总
			
Q: KBEngine是什么,能用来做什么?A: KBEngine是一个通用网络游戏服务器引擎,适合绝大多数中心拓扑结构的网络游戏,包括但不限于即时和回合制MMORPG.副本类.房间类.卡牌.棋牌等. ...