第三週下 kmp
E - Period HDU - 1358
題意
求一串字元中的字首中有多少最大週期數,例如“aaa”中,前兩個“aa”最小週期長度為“a”,所以週期長度為2,前三個“aaa”的最小週期也是“a”所以週期長度為3;再如“aabaabaabaab”中前6個“aabaab”的最小週期長度為“aab”,所以週期為2.前9個有3個aab,所以週期長度為三
輸出第一個數是你所擷取的字串長度,第二個數是有幾個迴圈週期
aabaab”的字首next[]陣列的儲存是這樣的{0, 1, 0, 1, 2, 3}
#include<stdio.h>
#include<string.h>
using namespace std;
const int N=1000002;
char s1[N],s2[N];
int next[N];
void gnext(int l)
{
int i=0,j=-1;
next[0]=-1;
while(i<l)
{
if(j==-1||s1[i]==s1[j])
{
++i,++j;
next[i]=j;
}
else j=next[j];
}
}
int main()
{
int n,q=1;
while(~scanf("%d",&n)&&n)
{
scanf("%s",s1);
int l1=strlen(s1);
gnext(l1);
printf("Test case #%d\n",q++);
for(int i=1;i<=n;i++)
{
if(!next[i])
continue;
int k=i-next[i];
if(i%k==0)
printf("%d %d\n",i,i/k);
}
printf("\n");
}
return 0;
}
相關文章
- 第三週週二
- 第三週 週二
- 第三週週三
- 第三週週五
- POJ 1261 Period KMP (字串週期)KMP字串
- 第三週總結
- 第三週週一
- Javaweb第三週作業JavaWeb
- java第三週學習Java
- 第三週Swift總結Swift
- 第三週 作業3
- 第三週作業2
- 第三週 作業4
- 字串匹配基礎下——KMP 演算法字串匹配KMP演算法
- KMPKMP
- 遊戲⼴告買量週報(3月第三週)遊戲
- Python第三週作業Python
- Java第三週作業(3)Java
- 第三週學習總結
- POJ--2406Power Strings+KMP求字串最小週期KMP字串
- KMP模版KMP
- KMP模板KMP
- 第三週作業(三):wc程式C程式
- 第三週作業(二):分析程式碼
- POJ 3461 kmpKMP
- 專題十六 KMP & 擴充套件KMP & Manacher【Kuangbin】KMP套件
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- PHP 第三週函式學習記錄PHP函式
- 厚基礎Linux——第三週作業Linux
- 【團隊作業】第三週作業1
- hihocoder 1015 KMP演算法 (KMP模板)KMP演算法
- kmp 演算法KMP演算法
- KMP演算法KMP演算法
- 第三週:java物件導向部分總結(2)Java物件
- 團隊作業—第三週—設計類圖
- 團隊作業-第三週-設計類圖
- FZU 2275 Game (KMP)GAMKMP
- 藍橋複習——KMPKMP