POJ2406-Power Strings【KMP】
生活随笔
收集整理的這篇文章主要介紹了
POJ2406-Power Strings【KMP】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
鏈接:
http://poj.org/problem?id=2406
大意
一個字符串,求最小循環節。
解題思路
用KMP求循環節。
因為如果有循環節那么一定是l-next[l]。只需要判斷一下l-next[l]是否可以被l整除就好了
代碼
#include<cstdio> #include<cstring> using namespace std; char s[1000051]; int l,p[1000051]; void ycl()//KMP自我匹配 {p[0]=-1;for (int i=1,j=-1;i<l;i++){while (j>=0&&s[i]!=s[j+1]) j=p[j];if (s[i]==s[j+1]) j++;p[i]=j;} } int main() {while (true){scanf("%s",s);if (s[0]=='.') break;l=strlen(s);ycl();if (l%(l-p[l-1]-1)) printf("1");else printf("%d",l/(l-p[l-1]-1));//輸出printf("\n");} }總結
以上是生活随笔為你收集整理的POJ2406-Power Strings【KMP】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ2752-Seek the Nam
- 下一篇: 玲珑全部演员表 哪些演员出演玲珑电视剧