통계 난제 (사전 트 리 중 하 나 는 간결 해 보 이 는 stl)

6189 단어 데이터 구조
Time Limit: 2000 MS Memory Limit: 65535 KB 64bit IO Format:% I64d &% I64u 이 문 제 는 사전 트 리 의 이해 문제 로 가장 좋다.
Description
Ignatius        ,          (         ,           ),                       (            ).
Input
               ,       ,         10,           Ignatius     ,            .           ,       ,            . 

  :           ,        .
Output
      ,                 .
Sample Input

banana
band
bee
absolute
acm

ba
b
band
abc 
Sample Output

2
3
1
0 




1: 선분 수
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define inf 0x3f3f3f3f
using namespace std;
void Insert(char *s);
int Find(char *s2);
struct node
{
    int son[30];
    int val;
};
node tree[1000005];
int num=1;
char s[15];
char s2[15];
int main()
{
    while(cin.getline(s,14))
    {
        if(s[0]=='\0')
            break;
        Insert(s);
    }
    while(cin.getline(s2,14))
    {
        cout<return 0;
}
void Insert(char *s)//  
{
    int root=0;
    int len=strlen(s);
    for(int i=0;iint p=s[i]-'a';
        if(!tree[root].son[p])
            tree[root].son[p]=num++;
        root=tree[root].son[p];
        tree[root].val++;
    }
}
int Find(char *s2)//  
{
    int root=0;
    int len=strlen(s2);
    for(int j=0;jint p=s2[j]-'a';
        if(!tree[root].son[p])
            return 0;
        root=tree[root].son[p];
    }
    return tree[root].val;
}

2: stlhttp://blog.csdn.net/qingshui23/article/details/47417907
#include 
#include 
#include 
#include 

using namespace std;

char str[20];
int main()
{
    map<string, int> m;
    while(gets(str))
    {
        int len = strlen(str);
        if(!len)
            break;
        for(int i=len; i>0; i--)
        {
            str[i] = '\0';
            m[str]++;
        }
    }
    while(gets(str))
    {
        printf("%d
"
,m[str]); } return 0; }

좋은 웹페이지 즐겨찾기