天天看點

A.諜報分析

A.諜報分析

      “八一三”淞滬抗戰爆發後,*幾次準備去上海前線視察和指揮作戰。但都因為甯滬之間的鐵路和公路遭到了敵軍的嚴密封鎖,狂轟濫炸,一直未能成行。

      特科組織,其主要任務是保衛**的安全,了解和掌握敵方的動向。經過一段時間的監聽,諜報組擷取了敵方若幹份密報,經過分析,發現了密文中頻繁出現一些單詞,情報人員試圖從單詞出現的次數中,推出敵軍的行動計劃。

      請你程式設計,快速統計出頻率高的前十個單詞。

【輸入】

密文是由英語單詞(小寫字母)組成,有若幹段。單詞之間由一個或多個空格分開。自然段之後可以用一個“,”或“.”表示結束。整個内容的單詞數量不超過10000,不同的單詞個數不超過500個。

【輸出】

輸出占10行,每行一個單詞及出現的次數,中間一個空格。要求按頻率降序輸出,出現次數相同的單詞,按字典序輸出。

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

繼續閱讀