實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文(因為分詞太難了),只考慮長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。
輸入格式:
輸入首先給出正整數n(≤100),為檔案總數。隨後按以下格式給出每個檔案的內容:首先給出檔案正文,最後在一行中只給出乙個字元#,表示檔案結束。在n個檔案內容結束之後,給出查詢總數m(≤10^4 ),隨後m行,每行給出一對檔案編號,其間以空格分隔。這裡假設檔案按給出的順序從1到n編號。
輸出格式:
針對每一條查詢,在一行中輸出兩檔案的相似度,即兩檔案的公共詞彙量佔兩檔案總詞彙量的百分比,精確到小數點後1位。注意這裡的乙個「單詞」只包括僅由英文本母組成的、長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。單詞間以任何非英文本母隔開。另外,大小寫不同的同一單詞被認為是相同的單詞,例如「you」和「you」是同乙個單詞。
輸入樣例:
3
aaa bbb ccc
#bbb ccc ddd
#aaa2 ccc eee
is at ddd@fff#2
1213
輸出樣例:
50.0
%33.3
%
#include
#include
#include
using
namespace std;
int n, m, same[
101]
[101
], cnt[
101]
, a, b;
mapbool
> mp[
101]
;int
main()
else
for(
auto
& it : mp[i]
)for
(int j =
1; j <= i; j++)if
(mp[j]
.find
(it.first)
!= mp[j]
.end()
) same[i]
[j]= same[j]
[i]+
= mp[j]
[it.first];}
cin >> m;
for(
int i =
0; i < m; i++
)return0;
}
改進前:【超時】
#include
#include
#include
using
namespace std;
intmain()
}if(s.size()
>2)
} v[i]
= st;
} cin >> m;
for(
int i =
0; i < m;
++i)
return0;
}
7 44 基於詞頻的檔案相似度(30 分)
本題目要求實現乙個簡化的熱門話題推薦功能,從大量英文 因為中文分詞處理比較麻煩 微博中解析出話題,找出被最多條微博提到的話題。輸入格式 輸入說明 輸入首先給出乙個正整數n 105 隨後n行,每行給出一條英文微博,其長度不超過140個字元。任何包含在一對最近的 中的內容均被認為是乙個話題,輸入保證 成...
7 44 基於詞頻的檔案相似度 (30 分
實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文 因為分詞太難了 只考慮長度不小於3 且不超過10的英文單詞,長度超過10的只考慮前10個字母。輸入格式 輸入首先給出正整數n 100 為檔案總數。隨後按以下格式給出每個檔案的內容 首先給出檔...
7 44 基於詞頻的檔案相似度 30 分
先檢查輸入的單詞是否分割正確,再進行統計。注意點 單詞大小寫不敏感 單詞長度大於2且小於等於10,以非字母分割。兩個檔案的單詞總量如果有相同的單詞,只統計一次。include include include include include include using namespace std co...