HUST - 1010 The Minimum Length(最小循环节)
2015-11-05 10:14
323 查看
1、赤裸裸的最小循环节
2、
3、
2、
3、
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; #define MAXN 1000005//字符串长度 int _next[MAXN]; void GetNext(char t[]){//求next数组 int j,k,len; j=0;//从0开始,首先求_next[1] k=-1;//比较指针 _next[0]=-1;//初始值-1 len=strlen(t); while(j<len){ if(k==-1||t[j]==t[k]){//指针到头了,或者相等 ++j; ++k; _next[j]=k;//此句可由优化替代 /*优化(求匹配位置时可用) if(t[j]!=t[k])_next[j]=k; else _next[j]=_next[k]; //*/ } else k=_next[k]; } } int main(){ char str[MAXN]; int len,len2; while(~scanf("%s",str)){ len=strlen(str); GetNext(str);//求子串的next数组 len2=len-_next[len];//最小循环节 printf("%d\n",len2); } return 0; }
相关文章推荐
- CentOS7 安装配置 vsftpd
- 使用Linux的Crontab定时执行PHP脚本
- ExecutorService 线程池
- a href="javascript:void(0)" 是什么意思?加不加上有什么区别
- 快速排序
- HillStone 做多NAT 使用不同的网络带宽出口
- THU2015 fall 2-3 Rebuild
- ios Memory Usage Performance Guidelines
- JAVA笔记系列:字符串操作——string stringbuilder stringbuffer
- Android studio提交代码到Git@OSC
- 抓包工具收集
- 生产者消费者模式
- yum no key
- JNI用法参考
- android开发问题
- c++primer第九章习题(4)
- solr的多条件组合查询和solr的范围查询
- hibernate持久化对象解析2(一对多)
- 二分查找思想
- GCD