통계 문제

1410 단어 HDU
클릭하여 링크 열기
문제풀이 사고방식: 사전 트리의 템플릿을 직접 사용하고 빈 줄로 끝나는 판단은strcmp(str,''')==0
코드:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//          
struct Trie{
    int num;
    Trie *child[26];

     //          

    Trie(){
        num = 0;
        memset(child , 0 , sizeof(child));
    }
};
Trie *root;
//       
void Tree_Insert(char *str){
    Trie *s = root;
    int i = 0;
    int len = strlen(str) - 1;
    while(str[i]){
        int id = str[i] - 'a';
        if(s -> child[id] == NULL)
            s -> child[id] = new Trie();//       
        s = s -> child[id];
        s ->num++;

        i++;

      }
}
//  
int Tree_search(char *str){
    Trie *s = root;
    int count;
    while(str[i]){
        int id = str[i] - 'a';
        if(s -> child[id] == 0){
            return 0;
        }
        else{
            s = s -> child[id];
            count = s -> num;
        }

        i++;

     }
    return count;
}
int main(){
    root = new Trie();//       
    char str[15];
    while(gets(str),strcmp(str,"")){ //         ,     
        Tree_Insert(str);
    }
    while(gets(str)){
        cout<<Tree_search(str)<<endl;
    }
    return 0;
}

좋은 웹페이지 즐겨찾기