題意:
給你乙個串,問你都哪些位置即使字首又是字尾。
思路:可以用kmp來做,嘗試過很多種方法,想把兩個串接起來然後..失敗,後來又想可以倒著匹配,就是把整個串倒過來..失敗,說下第三種也是成功的方法,就是正常匹配,然後找到最後乙個的next,如果是0,那麼就不用找了,否則裡面的數值是答案,然後再找next對應的那個數值,一直找到0,最後記得把總長度加上,正確性可以這麼想,從後往前找保證是字尾,不是0保證當前失配不用返回起點也就是當前是當前是某個和字首相同但不是字首的字串的最後乙個字母。
#include#includechar str[400005];
int next[400005];
int ans[400005];
void get_next(int m)
return ;
}int main ()
ans[0] = m;
m = i;
for(i = m ;i >= 0 ;i --)
}return 0;
}
POJ 2752 (擴充套件kmp)
給你乙個字串,對於它的每乙個字首,如果同時是它的字尾的話,那麼輸出這個字首的位置。擴充套件kmp求一下next陣列,然後掃一遍每個位置,如果這個位置的next值 也就是這個位置的字尾和字首的最大匹配長度 是等於字尾長度的話,也就是說這個位置的字尾同時也是它的字首的話,那麼這個位置就是乙個答案。inc...
poj2752 字串子KMP應用
統計字首字尾相等的個數,包括自身,從小到大輸出。可以通過next向前統計。因為每乙個next i 都指向該串前部字串 p0p1.pk 1 與i之前字串相等 pi k 1.pi 2pi 1 的最大字串,只要再向前統計字串的匹配個數,即可得到更小的匹配情況。還有,開大的陣列的話,不能子main 裡面開,...
poj2752 字串子KMP應用
統計字首字尾相等的個數,包括自身,從小到大輸出。可以通過next向前統計。因為每乙個next i 都指向該串前部字串 p0p1.pk 1 與i之前字串相等 pi k 1.pi 2pi 1 的最大字串,只要再向前統計字串的匹配個數,即可得到更小的匹配情況。還有,開大的陣列的話,不能子main 裡面開,...