傳送門!
將每個數變成當前位置減上一次出現的位置,用kmp
kmpkm
p匹配,但要注意如果當前位置減上一次出現位置的差超過了匹配長度則視為沒有出現過,要特判
#include
#include
#include
#include
#include
#define maxn 1000005
#define ll long long
using
namespace std;
int t,n,m,c,a[maxn]
,b[maxn]
,pos[maxn]
,ans[maxn]
,nxt[maxn]
;const
int bas=
1000003
,mod=
1e9+7;
inline
intrd()
inline
bool
judge
(int x,
int y)
intmain()
memset
(pos,0,
sizeof pos)
;for
(int i=
1;i<=m;i++
)for
(int i=
2,j=
0;i<=m;i++
)for
(int i=
1,j=
0;i<=n;i++
)printf
("%d\n"
,tot)
;for
(int i=
1;i<=tot;i++
)printf
("%d "
,ans[i]);
puts(""
);}return0;
}
KMP演算法,字串 序列匹配位置的查詢
kmp演算法是乙個設計精巧的匹配查詢演算法,用於查詢2個字串或者序列,乙個 小的 在另乙個 大的 中最佳匹配位置。演算法的核心思想是跳過一些已經確定不會匹配的部分。python實現如下 kmp字串匹配演算法 defkmp bigstr str,smallstr str,all false list,...
KMP模式匹配
1,若第i個開始不等,移動到第i個。直接將sub 0 與src 5 比較。01 2345 678a bcab abca abca bx 2,sub 2 與src 5 比較。01 2345 678a bcab abca abca b 看大神的 理解不了,還是按自己的思路寫乙個,繁瑣還是起碼好理解就行。...
KMP匹配演算法
1.概述 在講解kmp匹配演算法之前,我們不妨來看看我們用暴力法是怎麼完成字串的匹配的.在我們的目標串t 101011011,和模式串p 110中,我們在t中找尋p第一次出現在t中的下標.通過上圖,我們發現我們利用暴力匹配法,在某次失敗後我們只能非常機械的一步一步移動我們的模式串p.所以我們理解了上...