模板 KMP與MP的區別(洛谷P3375)

2021-09-12 21:00:58 字數 530 閱讀 9235

學kmp的時候巨佬說我這寫的是mp,仔細去查了查資料,才發現了區別。

洛谷這道題用kmp是解決不了的,kmp的nxt陣列和mp的nxt陣列略有不同。

這位大佬寫的過程很清楚,但是程式不是怎麼看得懂,而且實際放到洛谷的題上測應該也是過不了的(應該。

直接放程式8

#include#define rep(i,k,n) for(int i=k;i<=n;i++)

#define pb push_back

using namespace std;

const int maxn=1000005;

int n,m,knxt[maxn],mnxt[maxn];

char str[maxn],ptr[maxn];

vectorans;

void kmp_cal_nxt()

}void mp_cal_nxt()

}void kmp()

}void mp()

}int main()

p 3 與 p 3 的區別

p 3 與 p 3 的區別 int p 3 p是乙個陣列,此陣列有3個元素,每個元素都是int型別,也就是指向整型資料的指標型別。int a 10,b 20,c 30 int p 3 而int p 3 中的p是乙個指向陣列的指標,此陣列有3個int型別的元素。例如 int a 3 那麼p就是指向這個...

洛谷 P3375 模板 KMP字元匹配

如題,給出兩個字串s1和s2,其中s2為s1的子串,求出s2在s1中所有出現的位置。為了減少騙分的情況,接下來還要輸出子串的字首陣列next。輸入格式 第一行為乙個字串,即為s1 第二行為乙個字串,即為s2 輸出格式 若干行,每行包含乙個整數,表示s2在s1中出現的位置 接下來1行,包括length...

洛谷 P3375 模板 KMP字串匹配

題目大意 給出n長的字串s1,m長的字串s2,求出s2在s1中所有出現的位置。用kmp做,先輸入每一次s2出現的位置,然後輸出s2的字首陣列next。題解 kmp next i 表示需要匹配的字串的最長公共前字尾的長度。怎麼求next i 呢?首先初值next 1 0,j 0 對於每乙個如果s2 j...