POJ--2406Power Strings+KMP求字串最小週期
題目連結:點選進入
其實就是KMP演算法next陣列的簡單應用。如果我們設這個字串的最小週期為x 長度為len,那麼由next陣列的意義,我們知道len-next[len]的值就會等於x。這就是這個題目的關鍵點。
程式碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1000000+100;
char str[maxn];
int next[maxn];
int kmp_next(char x[],int m,int next[])
{
int i,j;
j=next[0]=-1;
i=0;
while(i<m)
{
while(-1!=j&&x[i]!=x[j])
j=next[j];
next[++i]=++j; ///next函式從第一位開始算
}
if(m%(m-next[m])==0)
return m/(m-next[m]);
return 1;
}
int main()
{
///freopen("in.txt","r",stdin);
while(scanf("%s",str))
{
if(str[0]=='.')
break;
printf("%d\n",kmp_next(str,strlen(str),next));
}
return 0;
}
相關文章
- KPM演算法求字串的最小週期證明演算法字串
- Laravel 請求週期Laravel
- AWR1243+mmWaveStudio最小幀週期的探討
- (樹_)求最小深度
- Envoy 代理中的請求的生命週期
- 取週期性字串中的其中一個字串
- 求最小k個數
- 【知識】字串 最小表示法字串
- 時鐘週期,機器週期,指令週期
- Python求最小公倍數Python
- 字串相乘——求字串的乘積字串
- 生命週期
- 求三個數的最小公倍數
- 2419 求最大值和最小值
- Vue生命週期activated之返回上一頁不重新請求資料Vue
- View生命週期與Activity生命週期的關係View
- vue - 生命週期Vue
- Fragment生命週期Fragment
- vue生命週期Vue
- spring生命週期Spring
- ubuntu生命週期Ubuntu
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- PHP 生命週期PHP
- maven生命週期Maven
- Activity生命週期
- React生命週期React
- 關於Laravel的二、三事(1)一次請求的生命週期Laravel
- 一條HTTP請求的生命週期(二)-- TCP, 本文基於 RFC793HTTPTCP
- Salesforce 生命週期管理(一)應用生命週期淺談Salesforce
- 選擇問題(求第k個最小元素)
- 靜態類求最大值最小值
- java求最小公倍數(親測秒懂)Java
- 求字串連續字元數量字串字元
- 多級時序系統:機器週期,時鐘週期
- DRF請求的生命週期:三年程式設計師的實戰感悟程式設計師
- vue 生命週期梳理Vue
- java servlet 生命週期JavaServlet