A.谍报分析

来源:互联网 发布:明星互动软件 编辑:程序博客网 时间:2024/06/06 15:01

A.谍报分析

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

【输入】

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

【输出】

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

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>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;i<j;i++)        {            if(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;}
0 0
原创粉丝点击