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 ;
}