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
- 37. 請求的生命週期
- 演算法篇-字串-週期串演算法字串
- POJ 1261 Period KMP (字串週期)KMP字串
- Envoy 代理中的請求的生命週期
- Delphi字串的引用計數與生命週期字串
- AWR1243+mmWaveStudio最小幀週期的探討
- 取週期性字串中的其中一個字串
- 時鐘週期,機器週期,指令週期
- Python求最小公倍數Python
- 字串相乘——求字串的乘積字串
- 生命週期
- View生命週期與Activity生命週期的關係View
- Vue生命週期activated之返回上一頁不重新請求資料Vue
- Android RxJava+Retrofit完美封裝(快取,請求,生命週期管理)AndroidRxJava封裝快取
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Fragment生命週期Fragment
- Activity生命週期
- vue - 生命週期Vue
- React生命週期React
- ubuntu生命週期Ubuntu
- React 生命週期React
- vue生命週期Vue
- Salesforce 生命週期管理(一)應用生命週期淺談Salesforce
- java求一個整數的最小因子Java
- 關於Laravel的二、三事(1)一次請求的生命週期Laravel
- 一條HTTP請求的生命週期(二)-- TCP, 本文基於 RFC793HTTPTCP
- 多級時序系統:機器週期,時鐘週期
- Activity生命週期onDestroy
- Flutter -- Element生命週期Flutter
- javascript週報 434 期JavaScript
- Flutter 的生命週期Flutter
- SQL的生命週期SQL
- java servlet 生命週期JavaServlet
- React-生命週期React