學習kmp演算法,給出主串和模式串,求模式串在主串的位置
演算法框架如下,僅供參考
第乙個輸入t,表示有t個例項
第二行輸入第1個例項的主串,第三行輸入第1個例項的模式串
以此類推
第一行輸出第1個例項的模式串的next值
第二行輸出第1個例項的匹配位置,位置從1開始計算,如果匹配成功輸出位置,匹配失敗輸出0
以此類推3
qwertyuiop
tyu
aabbccdd
ccc
aaaabababac
abac
-1 0 0 5
-1 0 1 0
-1 0 0 1 8
#include #include using namespace std;
class mystring
if(p[i - 1] == p[temp])
next[i] = temp;}}
int kmpfind(string p, int pos, int next)
else
if(j == -1)
}if(p[j] == '\0')
return i - j;
else
return -1;
}public:
mystring()
mystring(string s)
~mystring()
void setval(string sp)
int kmpfindsubstr(string p, int pos)
cout << endl;
int v = -1;
v = kmpfind(p, 0, next);
delete next;
return v;
}};
int main()
return 0;
}
DS串應用 KMP演算法
題目描述 學習kmp演算法,給出主串和模式串,求模式串在主串的位置 演算法框架如下,僅供參考 輸入第乙個輸入t,表示有t個例項 第二行輸入第1個例項的主串,第三行輸入第1個例項的模式串 以此類推 輸出第一行輸出第1個例項的模式串的next值 第二行輸出第1個例項的匹配位置,位置從1開始計算,如果匹配...
資料結構kmp演算法應用(c )
題目描述 根據kmp演算法的next陣列值,推斷模式字串。假設模式字串中只存在0,1兩種字元。給出首字元和next陣列。請輸出模式字串。如果next陣列不合法則輸出error input format 先輸入模式字串首字元0或者1,然後輸入尾字元0或者1 再輸入 模式字串長度n,n 30 最後輸入n...
資料結構 KMP演算法
求串的模式值next n 定義 1 next 0 1 意義 任何串的第乙個字元的模式值規定為 1。2 next j 1 意義 模式串t中下標為j的字元,如果與首字元相同,且 j的前面的 1 k個字元與開頭的 1 k個字元不等 或者相等但t k t j 1 k 如 t abcabcad 則next 6...