POJ 290 动物排序加强版

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=290

思路: 字典树。

#include <iostream>
#include <malloc.h>
#include <cstdio>
#include <cstring>
using namespace std;

struct tirenode
{
    int num;
    struct tirenode * b[26];
}tire;

void init()
{
    for(int i = 0; i < 26; i++)
        tire.b[i] = NULL;
}

int insert(char data[10])
{
    int i;
    int len = strlen(data);

    struct tirenode * temp = &tire;

    for(i = 0; i < len; i++)
    {
        if(temp->b[data[i] - ‘a‘] == NULL)
        {
            temp->b[data[i] - ‘a‘] = (struct tirenode *)malloc( sizeof(struct tirenode) );
            for(int j = 0; j < 26; j++)
                temp ->b[data[i] - ‘a‘] -> b[j] = NULL;
            if(i == len-1)
            {
                temp ->b[data[i] - ‘a‘] -> num = 1;
                return temp ->b[data[i] - ‘a‘] -> num;
            }
            else
            {
                temp ->b[data[i] - ‘a‘] -> num = 0;
            }
        }
        else
        {
            if(i == len-1)
            {
                temp ->b[data[i] - ‘a‘] -> num++;
                return temp ->b[data[i] - ‘a‘] -> num;
            }
        }
        temp = temp->b[data[i] - ‘a‘];
    }
}

int main()
{
    int n;
    scanf("%d", &n);
    char c[10];
    int max = 0;
    char res[10];
    int num = 0;

    init();

    for(int i = 0; i < n; i++)
    {
        scanf("%s",c);
        num = insert(c);

        if( max < num )
        {
            max = num;
            strcpy(res,c);
        }
    }

    printf("%s %d\n",res,max);
    return 0;
} 
时间: 2024-11-05 22:32:20

POJ 290 动物排序加强版的相关文章

NTOJ 290 动物统计(加强版)

动物统计加强版 描述 在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单.科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙. 输入 第一行输入动物名字的数量N(1<= N <= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据).  输出 输出这些动物中最多的动物的名字与数量,并用空格隔开(数据保证最多的

nyoj 290 动物统计加强版 (字典树 PS:map&lt;TLE&gt;)

动物统计加强版 时间限制:3000 ms  |  内存限制:150000 KB 难度:4 描述 在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单.科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙. 输入 第一行输入动物名字的数量N(1<= N <= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据).

南阳oj NYOJ 动物统计加强版 数据结构 题目290

 /*动物统计加强版 时间限制:3000 ms  |  内存限制:150000 KB 难度:4 描述 在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单.科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙. 输入第一行输入动物名字的数量N(1<= N <= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数

poj 4084:拓扑排序

poj 4084:拓扑排序 很好的题目,恶心的算法 描述 给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前. 输入 若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号. v<=100, a<=500 输出 若干个空格隔开的顶点构成的序列(用小写字母). 样例输入 6 8 1 2 1 3 1 4 3 2 3 5 4 5 6 4 6 5 样例输出 v1 v3 v2 v6 v4 v5 解题方案 显然这是有向图,然

POJ 1007:DNA排序

AC CODE: 1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 Scanner input = new Scanner(System.in); 7 8 // 得到数据 9 int n = input.nextInt(); 10 int m = input.nextInt(); 11 String temp = input.nextLine();

Poj 1094 拓扑排序 水题

Sad..这么水的题WA了无数发,题目要看仔细啊,留下来做个警告把 #include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib> #include <list> #i

poj 4086:DNA排序

poj 4086:DNA排序 题目 描述 现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序. 逆序对指的是字符串A中的两个字符A[i].A[j],具有i < j 且 A[i] > A[j] 的性质.如字符串"ATCG"中,T和C是一个逆序对,T和G是另一个逆序对,这个字符串的逆序对数为2. 输入 第1行:两个整数n和m,n(0<n<=50)表示字符串长度,m(0<m<=100)表示字符串数量 第2至m+1行:

poj 2367 拓扑排序

题目链接:http://poj.org/problem?id=2367 题目大意:就是进行拓扑排序,先给你一个数n,代表1~n,对于每个数有一系列的指向,最后将这些数进行排列出来..就是简单的拓扑排序. 首先拓扑排序应该有两种实现的方法.. 一种是用dfs进行每个节点的搜索,最后进行回溯,这样的话很容易就能明白先找出来的应该是后面的数,而最后找出来的应该是之前的数,因为是回溯出来的嘛..所以可以使用一个栈来进行答案的存储,因为栈的特性就是后压入的先弹出. dfs实现的思想:利用一个数组来存储每个

Scrambled Polygon POJ - 2007(极角排序)

Scrambled Polygon POJ - 2007 题意: 思路:其实就是将(0,0)这个点按照极角排序,其他点对于(0,0)来排序,将排序后输出就行,注意输入不定 1 // 2 // Created by HJYL on 2020/1/17. 3 // 4 #include<iostream> 5 #include<cstring> 6 #include<cstdio> 7 #include<cmath> 8 #include<algorith