A.谍报分析

A.谍报分析

      “八一三”淞沪抗战爆发后,*几次准备去上海前线视察和指挥作战。但都因为宁沪之间的铁路和公路遭到了敌军的严密封锁,狂轰滥炸,一直未能成行。
      特科组织,其主要任务是保卫**的安全,了解和掌握敌方的动向。经过一段时间的监听,谍报组获取了敌方若干份密报,经过分析,发现了密文中频繁出现一些单词,情报人员试图从单词出现的次数中,推出敌军的行动计划。
      请你编程,快速统计出频率高的前十个单词。

【输入】

密文是由英语单词(小写字母)组成,有若干段。单词之间由一个或多个空格分开。自然段之后可以用一个“,”或“.”表示结束。整个内容的单词数量不超过10000,不同的单词个数不超过500个。

【输出】

输出占10行,每行一个单词及出现的次数,中间一个空格。要求按频率降序输出,出现次数相同的单词,按字典序输出。

#include
#include
#include
#include
using namespace std;
struct haha
{
    char a[101];
    int num;
}s[505];
bool cmp(haha a,haha b)    //排序
{
    if(a.num==b.num)
        return strcmp(a.a,b.a)<0;
    return a.num>b.num;
}
int main()
{
    char b[101];
    int j=0;
    while(scanf("%s",b)!=EOF)
    {
        int temp=1;
        char c[101];
        memset(c,0,sizeof(c));
        int n=strlen(b);
        strcpy(c,b);
        if(b[n-1]==','||b[n-1]=='.')
            c[n-1]='\0';
        for(int i=0;iif(strcmp(s[i].a,c)==0)
            {
                temp=0;
                s[i].num++;
                break;
            }
        }
        if(temp==1)
        {
            strcpy(s[j].a,c);
            s[j].num=1;
            j++;
        }
    }
    sort(s,s+j,cmp);
    for(int i=0;i<10;i++)
        printf("%s %d\n",s[i].a,s[i].num);
    return 0;
}

你可能感兴趣的:(acm入门,河南省第十届ACM赛)