码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1251 统计难题(求前缀出现了多少次)

时间:2019-08-10 09:49:38      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:出现   ==   难题   char   col   out   name   als   nbsp   

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251

#include <iostream>
#include <cstring>
#include <cstdio>
#define mem(a,b) memset(a,b,sizeof(a));
using namespace std;
typedef long long ll;
const int maxn = 500005;
const ll INF = 0x3f3f3f3f;
int tot,n,trie[maxn][26],sum[maxn];
bool vis[maxn],flag;
void Insert(char *s,int rt)
{
    int len = strlen(s);
    for(int i = 0; i < len; i++)
    {
        int k = s[i] -a;
        if(trie[rt][k] == 0) trie[rt][k] = ++tot;
        sum[trie[rt][k]]++;
        rt = trie[rt][k];
    }
}
int Find(char *s,int rt)
{
    int len = strlen(s);
    for(int i = 0; i < len; i++)
    {
        int k = s[i] -a;
        rt = trie[rt][k];
        if(rt == 0) return 0;
    }

    return sum[rt];
}
int main()
{
    tot = 0;
    int rt = 0;
    flag = false;
    char s[105];
    while(1)
    {
        gets(s);
        if(s[0] == NULL)
        {
            break;
        }
            Insert(s,rt);
    }
    while(cin >> s) {
            cout << Find(s,rt) << endl;
    }
    return 0;
}

 

hdu 1251 统计难题(求前缀出现了多少次)

标签:出现   ==   难题   char   col   out   name   als   nbsp   

原文地址:https://www.cnblogs.com/LLLAIH/p/11330433.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!