【POJ3461】ウリポ

フェイス質問

https://vjudge.net/problem/POJ-3461

問題の解決策

書式#include <cstdioを> 
する#include <iostreamの> 
の#include <CStringの>
 に#define里int型登録
 の#define N 1000500
 使用して 名前空間はstdを、
INT T、次の[N]、N、M。
チャーS [N]、T [N]。

ボイドGETNEXT(){ 
  次の[ 0 ] =次の[ 1 ] = 0 ;
  (RI I = 2 ; iが<= N iが++ ){
     int型 J =次の[I- 1 ]。
    一方、(J && S [J + 1!] = sの[I])J = 次の[J]。
    もし(S [J + 1] == S [i])と、次の[I] = J + 1他に次の[I] = 0 ; 
  } 
} 

int型のmain(){ 
  scanf関数(" %のD "、&T)。
  一方、(T-- ){ 
    scanf関数(" %sの"、S + 1)。N = STRLEN(S + 1 )。
    scanf関数(" %sの"、T + 1)。m個の=のSTRLEN(T + 1 )。
    GETNEXT(); 
    int型のk = 0 int型の合計= 0 ;
    (RI I =1 ; I <= M; iは++ ){
       一方(K && S [K + 1 ] = T [i])とK =!次の[K]。
      もし(S [K + 1 ] == T [i])と{ 
        K ++ もし(kは== N){ 
          K = 次の[K]。
          合計 ++ ; 
        } 
      } 
    } 
    のprintf(" %d個の\ n " 、合計)。
  } 
  戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/shxnb666/p/11279648.html