https://blog.csdn.net/dreaming__ldx/article/details/88069272
https://blog.csdn.net/dingduan9147/article/details/101934455
#INCLUDE <. 비트 / stdc ++ H> #DEFINE INT는 레지스터 리 네임 스페이스를 사용하여 표준; CONST INT N = 10,005, 1,005 = M; 문자 S [N], t [M]; INT TMP = 0, ANS = 0, F [2] [M], N, m, [M] 실패; 주 () 값 int { 는 scanf를 ( "% S % S는"1 + s가 t + 1), N = strlen 함수 (S + 1) m = strlen 함수 (t + 1); 대 (RI I = 1, J = 0; I <= m; I ++) { 동안 (j && t [I + 1] t = [J + 1]!) J = 용은 [J]를 실패; 실패 [I + 1] t = [I + 1] == t [J + 1] J ++ : 0; } memset 함수 (F [TMP] - (1)를 sizeof (F [TMP])); F [TMP] [0] = 0; (내가 <= N; RI = I ++ 1 I)에 대한 { memset 함수 (F [TMP ^ 1] - (1)를 sizeof (F [TMP ^ 1])); (; J <m; RI J = 0, K + J)을위한 경우 (~ F [TMP] [J]) { F [TMP ^ 1] [j]가 = 최대 (F [TMP ^ 1] [J], F [TMP] [J]); K = J; 반면 (K && S [I] = t [K + 1]!) k 값은 = [K]를 실패; 경우 (S [I] == t [K + 1]) ++ K; F [TMP ^ 1] [K]가 = 최대 (F [TMP ^ 1] [K], F [TMP] [J] +1); } TMP ^ = 1; } 대한 RI (I = 0; I <m; I ++) ANS = 최대 (ANS, F [TMP] [I]); COUT << N-ANS; 0을 반환; }