POJ 1961 KMP(當前重複次數)

2021-06-22 07:36:43 字數 640 閱讀 8122

題意:

字首重複次數,舉個例子,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。舉兩個例...