HDU1251 (통계 수수께끼) (트라이 템플릿 제목

통계 문제

시간 제한 : 2,000분의 4,000 MS (자바 / 기타) 메모리 제한 : 65,535분의 131,070 K (자바 / 기타)
총 제출 (들) : 69,587 허용 제출 (들) : 24087


문제 설명
이그나티우스는 최근 문제가 발생하여, 교사는 그에게 (이 단어 표시의 더 반복 수 없습니다 소문자), 지금은 교사가 단어의 수 (단어 자체로 시작하는 문자열을 계산하는 그에게 물었다 많은 단어 자체입니다했다 접두사).
 
입력
입력 데이터의 첫 번째 부분은 단어 목록, 라인 당 하나 개의 단어, 10 이하의 워드 길이이고, 그들은 이그나티우스 단어에 대한 통계 교사를 나타내고, 빈 행은 테이블의 단어를 나타낸다. 두 번째 부분은 일련의 . 질문은, 라인 질문 당 하나는, 각 질문은 문자열입니다

참고 :이 제목은 테스트 데이터의 집합, 파일의 마지막에 처리합니다.
 
산출
각 질문에 대한 문자열에 주어진 번호는 접두사 단어입니다.
 
샘플 입력
바나나 밴드 꿀벌 절대 ACM BA B 대역 ABC
 
샘플 출력
0 1 2 3
 
 

 

사용법 #include <iostream> 
#INCLUDE <CString을> 
#INCLUDE <cstdio> 
#INCLUDE <cmath> 
#INCLUDE <cstdlib>
 CONST의  INT의 maxn = 1000000 ;
INT 트라이 [maxn] [ 27 ];
int로 ojbk [maxn];
INT의 색 [maxn];
INT의 K = 1 ;
사용하는  네임 스페이스 표준을;
보이드 _insert (  *의 w) 
{ 
    INT LEN = strlen 함수 (w);
    INT의 p = 0 ; // 节点. 
    대한 (값 int = 1을 0 ; I <렌; 내가 ++ ) 
    { 
        INT의 온도 = w [I] - ' ' ;
        만약 (! 트라이의 [피] [임시]) 
        { 
            트라이 [P] [임시] = K ++ ; 
        } 
        P = 트라이 [P] [임시]; 
        ojbk [P] ++ ; 
    } 
    색 [P]는 = 1 ; 
} INT의 쿼리 (  *의 S) 
{ INT LEN = strlen 함수 (S);
    INT ANS = 0 ;
    INT

    p = 0 ;
    위한 ( int로 I = 0 내가 ++; I <렌 ) 
    { 
        INT의 - 임시가 S [I] ' '을 ;
        만약 (! 트라이 [P]가 [온도가]) 
        { 반환 0 ; 
        } 
        P = 트라이 [P] [임시]; 
    } 리턴 [P]를 ojbk; 
} INT 의 main () 
{  워드 [ 15 ]; 
    memset 함수 (ojbk, 0 , sizeof 연산자 ojbk); 
    memset 함수 (색상, 0 ,
             
    

    를 sizeof 색);
    동안 (가져 (워드)) 
    { 
        INT LEN1 = 나 strlen (워드);
        경우 (LEN1의 == 0 )
         휴식 ; 
        _insert (워드); 
    } 
    동안 ((워드)을 얻는다) 
    { 
        의 printf ( " % D \ 없음 " 쿼리 (단어))을 
    } 
    반환  0 ; 
}
코드보기

 

추천

출처www.cnblogs.com/switch-waht/p/11519435.html