zoukankan      html  css  js  c++  java
  • 南阳oj 题目290 动物统计加强版 字典树

    动物统计加强版

    时间限制:3000 ms | 内存限制:150000 KB
    难度:4

    描述
    在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单。科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙。

    输入
    第一行输入动物名字的数量N(1<=N<= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据)。
    输出
    输出这些动物中最多的动物的名字与数量,并用空格隔开(数据保证最多的动物不会出现两种以上)。
    样例输入
    10
    boar
    pig
    sheep
    gazelle
    sheep
    sheep
    alpaca
    alpaca
    marmot
    mole
    样例输出
    sheep 3
    对于初学者的我来说,这题真坑,先是用结构体,然后在用map,尽自己最大能力对上述两种方法进行优化,然而还是超时。┭┮﹏┭┮
    最后百度看到了用字典树去写,就去学习了。没学过数据结构的我,去理解链表,难受香菇。
    不知道有没有比字典树 等节省时间的方法,应该有吧,以后在更新吧。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    struct node
    {
        node *next[26];//node 类的26个子类
        int num;//类的个数
        node()//构造函数 对类成员初始化
        {
            memset(next,0,sizeof(next));
            num=0;
        }
    };
    int Max=-123;//记录最大的个数
    char b[12];//记录最大的字符串
    node *top=new node();//申请一个node类的 作为所有类的根
    void lianbiao(char *a)//将新字符串插入
    {
        node *p=top;//node 类的指针 ,指向类的根
        int k;
        for(int i=0;a[i];i++)
        {
            k=a[i]-'a';
            if(p->next[k]==NULL)//判断是否存在这个字符节点  不存在则创建
                p->next[k]=new node();
            p=p->next[k];//更新p的指向下一个节点
        }
        p->num++;//字符串出现个数加一
        if(p->num>Max)//更新最大值 和字符串
        {
            Max=p->num;
            strcpy(b,a);
        }
    }
    int main()
    {
        int l;
        scanf("%d",&l);
        char a[12];
        while(l--)
        {
            scanf("%s",&a);
            lianbiao(a);//将新字符串插入
        }
        printf("%s %d",b,Max);
        return 0;
    }
    
  • 相关阅读:
    js正则表达式基本语法
    类似于QQ的右滑删除效果的实现方法
    JS设置cookie、读取cookie、删除cookie
    JavaScript随机生成颜色的方法
    mysql数据库备份及恢复
    Javascript 实现简单计算器实例代码
    JavaScript 实现的checkbox经典实例分享
    网页瀑布流布局jQuery实现代码
    Django Web在Apache上的部署
    VIM使用系列之一——配置VIM下C/C++编程环境
  • 原文地址:https://www.cnblogs.com/nanfenggu/p/7900116.html
Copyright © 2011-2022 走看看