シミュレーションゲームは、その日、YZR兄は私がHASH KMPを行う可能性が私に言った、そしてその場で、今日実行するだけで何もしそれをしませんでした、私はHASHトライと呼ばれ、結果は本当にタイトルKMPを与えました
コード:
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <CStringの> 4 使って 名前空間STDを、 5 のconst int型バ= 131、M = 1E6 + 10 。 6 CHAR [M]、B [M]。 7 長い 長いLA、LB; 8 長い 長いsumv [M]、ミル[M]、キー; 9 長い 長い 得る(長い 長 L、長い 長いR) 10 { 11 リターン sumv [R] -sumv [L] *ミル[ラ]。 12 } 13 のint main()の 14 { 15 キー= 0 。 16 のmemset(sumv、0、はsizeof sumv)。 17 のscanf(" %sの%sの"、B + 1、A + 1 )。 18 ラ=のSTRLEN(A + 1)、LB = STRLEN(B + 1)、ミル[ 0 ] = 1 。 19 のためには、(int型 i = 1 ; iが=ラ<; ++ I)キー=キー*バ+(INT )[I]; 20 のための(int型 I = 1 ; I <= LB; ++ I) 21 sumv [I] = sumv [I- 1 ] *バ+(INT)B [i]は、ミル[I] =ミル[I- 1 ] * バ; 22 INT ANS = 0 。 23 のための(int型 I = 0を ; ++; I <= LB-ラi)が 24 場合(キー== GET(私は、i)はラを+)++ ANS; 25 COUT << ANS << ENDL。 26 リターン 0 ; 27 }