題意:
字首重複次數,舉個例子,aaa 2的位置2個a,3的位置3個a
abcabcabc 6的位置兩個abcabc,9的位置三個abcabc....
思路:kmp基礎題目之一,直接利用的是next陣列的特點,對於當前點i,
i - next[i] 表示的是最小重複子串長度,如果 i - next[i] 不等於0,同時i % (i - next[i]) == 0說明當前字元是迴圈子串的最後一位,那麼tmp = i / (i - next[i]) 表示的是迴圈次數,如果tmp>1直接輸出i i / (i - next[i])就行了,就說這麼多吧,只要理解了next陣列就肯定會這個題目了。
#include
#include
#define n 1000000
+100
int next[n];
char str[n];
void
get_next
(int m)
return;}
intmain ()}
printf("
\n");}
return0;
}
poj1961 KMP求迴圈節
又是乙個kmp求迴圈節,只要i i next i 0 i i next i 就說明長度為i時,有i i next i 個迴圈節。為什麼會得到這個?這是由next函式的特性得到的,認真想一下,很容易想明白。如下 include include include includeusing namespac...
KMP以及next陣列應用 POJ1961
百萬級字串.無從下手,t到死 從網上查到要用kmp。我之前也是看過的,欺負我讀書少麼,kmp與這個題有神馬聯絡。題目分析 該題用到了next陣列,next陣列代表的是 字首 和 字尾 的最長的共有元素的長度 必然小於本身長度 為何用到它可能有些難以理解,慢慢來 從結果逆推,若乙個字串 len n 由...
PKU 1961 KMP判斷迴圈段位置
基本題意 給乙個字串,如果在前 i 位置處滿足連續迴圈a k a 單位迴圈段,k 迴圈個數 則輸出i和k 這題跟pku 2406差不多 yy kmp 儲存 next i 如果滿足 i能被單位長度 i next i 整除,說明 i next i 是單位迴圈段a,i i next i 也就是k。舉兩個例...