7 3 詞頻統計(30 分) 巧解

2021-08-23 14:13:30 字數 1507 閱讀 5981

2023年8月15日 於山東

7-3 詞頻統計(30 分)

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10%的單詞。

所謂「單詞」,是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的「單詞字元」為大小寫字母、數字和下劃線,其它字元均認為是單詞分隔符。

輸入給出一段非空文字,最後以符號#結尾。輸入保證存在至少10個不同的單詞。

在第一行中輸出文字中所有不同單詞的個數。注意「單詞」不區分英文大小寫,例如「pat」和「pat」被認為是同乙個單詞。

隨後按照詞頻遞減的順序,按照詞頻:單詞的格式輸出詞頻最大的前10%的單詞。若有並列,則按遞增字典序輸出。

this is a test.

the word "this" is the word with the highest frequency.

longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. but this_8 is different than this, and this, and this...#

this line should be ignored.

23

5:this

4:is

這道題其實不難,只是有些東西題目並沒有給清楚。

坑:看輸出格式的提示裡 「注意「單詞」不區分英文大小寫」 這句話 ,你既然是在輸出格式裡寫出,就會指引我們往輸出不論是da'x大小寫都是正確的 結果呢?只有小寫過了,大寫卻沒過。

技巧:使用匹配攻破之。scanf

#define _crt_secure_no_warnings

#include "bits/stdc++.h"

using namespace std;

struct stx px[100000+10];

int pxcnt = 0;

bool cmp(struct stx a, struct stx b)

class newgame

private:

void tsolve()

getchar();

} printf("%d\n",ks.size());

for (map::iterator it = ks.begin(); it != ks.end(); it++) px[pxcnt++] = ;

sort(px, px + pxcnt, cmp);

int cdnum = ks.size()*0.1;

for (int i = 0; i < cdnum; i++)

}};int main()

使用匹配時候務必小心死迴圈 造成這個原因是 scanf又接收了回車造成!!!需要加上getchar()

7 35 詞頻統計 (30 分)

7 35 詞頻統計 30 分 請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入...

7 35 詞頻統計 (30 分)

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入格式 輸入給出一段非空文字,最...

7 1 詞頻統計 30 分

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入給出一段非空文字,最後以符號 ...