bzoj3075 [Usaco2013] 목걸이

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을 반환; 
}

  

추천

출처www.cnblogs.com/cutemush/p/12616560.html