A(SDUT 2892)


A

Time Limit: 60MS Memory limit: 65536K

题目描述

给出n(1<= n && n <= 2*10^6)个字符串,每个字符串只包含小写英文字母,且最多有五个。问这n个字符串中出现次数最多的有多少个。

输入

单组输入。第一行输入一个数字n,接下来n行,每行包含一个字符串。

输出

输出一个数字代表答案。

示例输入

5
aba
abb
w
aba
z

示例输出

2

提示

 

来源

 

示例程序

说是字典树,我没用,直接暴力出来。

思路:将每一行的ASCLL码值求出来,存到sum数组里,对sum数组进行从大到小排序,比较数组中ASCLL值的大小,用count数组存放字符串出现的次数,如果相等则+1,最后输出。



#include 
#include 
#include 
#include 
using namespace std;
long long sum[2000010];//记录每行的ASCLL码值;
int countx[2000010];//记录相同字符串出现的次数;
int cmp(int a,int b)
{
    return a>b;
}//输入两个值,返回较大值;
int main()
{
    int i,j;
    long long len,n,t=1,k=0,m;
    char str[6];
    scanf("%lld",&n);
    memset(sum,0,sizeof(sum));
    memset(countx,0,sizeof(countx));
    for(i=0;i=0;j--)
        {
            sum[i]+=str[j]*t;//相当于阿拉伯数字中从个位+十位+百位+.....;
            t*=100;
        }
    }
    sort(sum,sum+n,cmp);
    m=sum[0];
    countx[0]=1;
    for(i=1;i




你可能感兴趣的:(字典树,SDUT,oj)