HUST-1010
2015-07-21 10:23
253 查看
//这是一道KMP题,核心思想就是求最小循环节点,其求法为:len-next[len];
AC代码:
AC代码:
#include<stdio.h> #include<string.h> #define max 1000005 char s[max]; int len; int next[max]; int sum; void get_next() { int i=0; int j=-1; next[0]=-1; while(i<len) { if(j==-1||s[i]==s[j]) { i++; j++; next[i]=j; } else { j=next[j]; } } } int main() { while(scanf("%s",s)!=EOF) { memset(next,0,sizeof(next)); sum=0; len=strlen(s); get_next(); printf("%d\n",len-next[len]); } return 0; }
相关文章推荐
- ssh passphrase 测试
- 一个简单的爬虫douban_list_spider.py
- 百炼-2815-城堡问题-DFS
- 移动混合应用Hybrid App开发实战
- OC 类目(category) 延展(extension) 协议(protocol)(摘抄)
- 黑马66期android学习笔记01-手机制式
- RabbitMQ第一篇——初识RabbitMQ,简单的消息发送和接收
- 归并排序
- ftruncate(改变文件大小)
- java 解决中文乱码
- C/c++几个预定义的宏:__DATE__,__TIME__,__FILE__,__LINE__
- 基于功能的数据库分类:联机事务处理和决策支持系统数据库
- 黑马程序员----JAVA基础----IO流_1
- linux 系统目录
- ubuntu 14.04各种源
- 关于向Android项目中的drawable下添加图片却无法使用的问题
- map的用法
- 素数线性筛选
- 北京数字认证股份有限公司-数字证书认证管理解决方案
- android常用对话框封装