HDU 3746 Cyclic Nacklace(KMP找循环节)
来源:互联网 发布:深圳it外包公司 编辑:程序博客网 时间:2024/05/01 02:58
这个题是给出一个字符串,问字符串后最少补多少个字母才能使这个字符串是一个周期串....周期最少是2...周期为1就不是周期串了...
根据next数组(虽然我的数组名是pre)的值可以看出周期串的性质...在最小周期之后的周期串,next数组的值是一直增大的...然后最小周期与i的关系是t=i-next[i]...然后我们看最后一个数字后面缺多少个凑成一个周期就好了...
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>using namespace std;char a[102000];int pre[100020];//前缀数组,pre[i]代表b数组中从第i个元素开始有pre[i]个元素和开头相等int m;void getpre(){ int i=0,j=-1; pre[0]=-1; while(i<m) { if(j==-1||a[i]==a[j]) pre[++i]=++j; else j=pre[j]; }}int main(){ int t; cin>>t; while(t--) { scanf("%s",a); m=strlen(a); getpre(); int len=m-pre[m]; if(m!=len&&m%len==0) printf("0\n"); else { int ans=len-pre[m]%len; printf("%d\n",ans); } } return 0;}
0 0
- HDU 3746 Cyclic Nacklace(KMP找循环节)
- HDU 3746 Cyclic Nacklace (KMP找循环节)
- HDU 3746 Cyclic Nacklace(KMP找循环节)
- HDU 3746 Cyclic Nacklace (KMP 循环节)
- 【kmp循环节】hdu 3746 Cyclic Nacklace
- HDU - 3746 Cyclic Nacklace(KMP 循环节)
- HDU 3746 Cyclic Nacklace [KMP+循环节]
- Cyclic Nacklace(HDU-3746)(KMP循环节)
- HDU 3746 Cyclic Nacklace(KMP 最小循环节)
- 【KMP(循环节)】hdu 3746 Cyclic Nacklace
- HDU - 3746 Cyclic Nacklace (KMP求循环节)
- HDU 3746--Cyclic Nacklace【KMP(最小循环节)】
- hdu 3746 Cyclic Nacklace (kmp求最小循环节)
- HDU 3746 Cyclic Nacklace (kmp求循环节)
- hdu3746 Cyclic Nacklace(kmp找循环节)
- HDU3746 Cyclic Nacklace KMP找循环节
- [KMP-求循环节]HDU 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace(KMP,最短循环节)
- UTF-8 字节数,及首字节的对应关系
- 字符和字符串的基础知识
- Map数据类型使用new map()和null及clear方法后的不同之处
- vb6内联汇编,调用函数指针,不注册调用com
- C语言中关键字auto、static、register、const、volatile、extern的作用
- HDU 3746 Cyclic Nacklace(KMP找循环节)
- leetcode -- Largest Number
- JAVA 输入输出txt三种方法
- 中国软件开发工程师之痛
- hdu 1045 Fire Net
- POJ 2002 - Squares(hash)
- mbed OS - ARM关于物联网(IoT)的战略布局
- 1303 Double
- hdu 1879 继续畅通工程 最小生成树入门模板题